我为简单的Spring Boot Web应用程序编写了以下测试:
@SpringApplicationConfiguration(classes=[PDK])
@WebIntegrationTest
@DirtiesContext
class GebMainpageSpec extends GebSpec {
@Autowired
WebApplicationContext context;
def setup() {
System.setProperty("webdriver.chrome.driver", "chromedriver/win32/chromedriver.exe");
browser.driver = new ChromeDriver();
browser.baseUrl = "http://localhost:8080/";
}
def 'Static page present and works, check without pages'() {
when:
go ""
then:
assert title == "MyApp"
}
def 'Static page present and works, check WITH pages'() {
when:
to Mainpage
then:
LoginWithFormUsername.value() == "root"
}
}
这些测试显然是有效的,即根据页面数据传递或失败。
问题在于它打开了两个Chrome浏览器实例(按测试次数计算)。
如何预防?可能是重用浏览器?或者可能在每次测试后关闭它?
更新
如果我添加如下内容
def cleanupSpec() {
browser.driver.quit()
}
然后我的所有测试都开始运行两次,而且,他们每次尝试使用HtmlUnit
(即使用“内存”网络浏览器,而不是Chrome)。
答案 0 :(得分:1)
使用GebSpec
时,不应该自己实例化驱动程序,因为它已经通过懒惰的getBrowser()
method初始化的浏览器实例处理驱动程序实例的生命周期。
通过how Geb interacts with WebDriver
instances查看“The Book of Geb”中有关configuring the driver to be used和the config script的各个部分以了解详情。