我正在尝试使用IntelliJ IDE开发,在Testcontainers内部的JUnit测试中使用Selenium在项目上建立UI测试框架。我正在使用OpenJDK 12.0.1
我有可以想到的最基本的测试,但是在尝试获取任何网站(维基百科,谷歌等)时,我一直收到Null Pointer Exception。
我在这里错过了重要的东西吗?
这是我设置的测试:
public class SimpleTest {
@Rule
public BrowserWebDriverContainer chrome = new BrowserWebDriverContainer()
.withCapabilities(new ChromeOptions());
@Test
public void simplePlainSeleniumTest() {
RemoteWebDriver driver = chrome.getWebDriver();
driver.get("https://google.com");
assertTrue("This should always pass", true);
}
}
在我的gradle文件中,我将导入以下内容:
compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.141.59'
compile group: 'org.seleniumhq.selenium', name: 'selenium-remote-driver', version: '3.141.59'
testCompile group: 'org.testcontainers', name: 'selenium', version: '1.11.3'
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.2.0'
testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.2.0'
test {
useJUnitPlatform()
}
我的testcontainers.properties文件中没有特殊设置
如果我理解我所看到的所有示例,则应为:
通过testcontainers在docker容器中打开测试。
在该容器内为Chrome创建驱动程序。
导航到给定的网站(在上面的示例中,google.com)
通过,因为true = true
但是无论我如何更改代码方式,我都会遇到以下错误:
selenium.SimpleTest > simplePlainSeleniumTest() FAILED
java.lang.NullPointerException at SimpleTest.java:34
第34行是:
driver.get("https://google.com");
最佳答案
您正在使用不支持规则的JUnit Jupiter。 Testcontainers中有单独的Jupiter支持,请参见以下页面:
https://www.testcontainers.org/test_framework_integration/junit_5/
基本上,您需要添加org.testcontainers:junit-jupiter:1.11.3
依赖项,用@Testcontainers
注释测试类,并用@Rule
替换@Container
。