def 'behaviour tests for route A'() {
when:
doA();
then:
data == 'Hi'
}
def 'behaviour tests for route B'() {
when:
doB();
then:
data == 'Hi'
}
void doA(){
...
}
void doB(){
...
}
@Unroll
def 'behaviour tests for route #name'() {
when:
route
then:
data == 'Hi'
where:
name | route
'A' | doA()
'B' | doB()
}
有办法做吗?
可以使用闭包提取要在when
块中执行的代码。
class ClosureSpec extends Specification {
@Unroll
def 'behaviour tests for route #name'() {
when:
def data = route()
then:
data == 'Hi'
where:
name | route
'A' | { doA() }
'B' | { doB() }
}
def doA() {
return 'Hi'
}
def doB() {
return 'Hi'
}
}
或者您可以使用groovys的动态特性来传递方法名
class DynamicSpec extends Specification {
@Unroll
def 'behaviour tests for route #name'() {
when:
def data = this."do$name"()
then:
data == 'Hi'
where:
name | route
'A' | _
'B' | _
}
def doA() {
return 'Hi'
}
def doB() {
return 'Hi'
}
}
根据用例,我会使用闭包,但是动态方法名也有它的用途,尤其是当您想要传递参数时。
WebUI automation testing framework based on Selenium 介绍: pyse基于selenium(webdriver)进行了简单的二次封装,比selenium提供的方法操作更简洁。 起因: python + selenium 自动化测试写久了发现selenium(webdriver)提供原生的方法并简便,于是,产生了二次封装的想法。想不到太炫酷的名
我很难在Java项目中使用Spock框架进行测试。我有以下内容: 但是,对于我的具体情况,我需要指定我传入的Person对象,并为其分配一个特定的MockReturnObject。比如: 或 这两种方法都不起作用,调用最终返回null而不是MockReturnObjectA(我认为这是因为它无法匹配参数)。不幸的是,我对Spock没有太多的经验,我试图搜索关于在这种情况下处理地图的文档,但没有取得
我希望在Spock中使用@WithMockUser运行一个参数化测试,每个迭代都有不同的角色。 作为一个示例,下面的测试代码没有显示编译错误,并且运行两次。但是结果失败了,因为#role只在@unroll中解析,而不在@WithMockUser注释中解析。 所以我的问题是:有可能运行这样一个参数化的测试吗?
我试图编写一个Spock规范,在这里我想验证一个用三个参数调用的方法。我根本不关心前两个,任何参数类型的实例都可以。我试图使用Spock通配符参数匹配,但不断遇到问题。我的验证如下所示: 这里是一个mock,UploadedPackage和PackageImportResponse.builder是预期的参数;在更改调用SaveService的代码之前,我试图先进行一个有效的测试。 我还尝试省略类
我正在使用selenium Web驱动程序、testng和java构建一个测试框架。在进行框架POC时,我遇到了一个问题。我想在每个测试用例之后执行一些代码,这将删除/重置应用程序到它的基本状态。每个测试用例的清理代码可能不同。 假设我有两个名为A和B的模块。在模块A中,我有3个测试用例Test1、test2、Test3。我想对每个测试用例(Test1、Test2和Test3)运行清理。每个测试用
我不明白Spock测试中Mock、Stub和Spy之间的区别,我一直在网上看的教程也没有详细解释它们。