我在Grails 2.3.7应用程序中使用geb和spock进行功能测试。该应用程序允许用户之间的实时互动,我想自动进行测试。
有谁知道如何或者是否有可能在一个Spec中运行两个不同的浏览器?例如,请参见下面的伪代码,以了解我如何在理想的环境中工作。
@Stepwise
class ChatPageSpec extends GebReportingSpec {
def "login with chrome"() {
}
def "login with firefox"() {
}
def "send chat request with chrome"() {
}
def "accept chat request with firefox"() {
}
def "send hello with chrome"() {
}
def "receive hello with firefox"() {
}
}
按照Craig的描述(http://www.objectpartners.com/2013/11/14/parallel-grails-functional-tests-with-geb-and-gradle/)并行运行测试看起来很有希望,但是如果我理解正确的话,并行测试将使用不同的应用程序实例,这将无法正常工作。另外,@ Stepwise或类似方法必须使浏览器保持同步。
我还检查了多边形驱动程序插件(http://grails.org/plugin/poly-driver),但看起来它是为每个Spec设计一个浏览器的。
肯
最佳答案
恐怕您需要为此手工制作一些东西。
实现此目标的方法是an example,它曾经发布到Geb邮件列表中。我自己从未使用过它,但是代码看起来很合理。感觉就像您要使用MultiBrowserGebSpec
并覆盖createBrowserMap()
一样。
您可以手动创建驱动程序实例,然后使用 setDriver()
在浏览器实例上进行设置。另一种方法是为不同的浏览器使用不同的配置文件,这些文件将使用 getConf()
加载并传递给Browser
构造函数。还有一种方法是在一个GebConfig.groovy
中为不同的浏览器提供不同的环境,并使用通过the constructor that accepts environment name创建的不同的ConfifgurationLoader
。
关于grails - 在一个GebReportingSpec中驱动两个不同的浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23634340/