我希望在Spock中使用@WithMockUser运行一个参数化测试,每个迭代都有不同的角色。
作为一个示例,下面的测试代码没有显示编译错误,并且运行两次。但是结果失败了,因为#role只在@unroll中解析,而不在@WithMockUser注释中解析。
@Unroll("#role is authorized to get admin")
@WithMockUser(username = "user", roles = ["#role"])
def "User is authorized to get admin"() {
when:
def adminDto = adminController.getAdmin()
then:
adminDto.getStatusCode() == HttpStatus.OK
where:
role << ["USER", "ADMIN"]
}
所以我的问题是:有可能运行这样一个参数化的测试吗?
@WithMockUser(username = "user", roles = ["USER", "ADMIN"])
简短的回答不。
注释是在编译时静态编译的,Spock不能修改,迭代是在运行时动态生成/计算的。@unroll
注释对数据变量有一些特殊的支持,以使其工作,而Spring注释对Spock一无所知。
您可以查看WithMockUserSecurityContextFactory,并使用它手动设置givid
块中的SecurityContext
。
我想用groovy和Spock测试这个类:
有办法做吗?
使用Robolectric的参数化测试 原文链接 : Parameterized testing with Robolectric 译文出自 : 开发技术前线 www.devtf.cn 译者 : Lollypo 校对者: Chaos 状态 : 校对完成 在目前的项目中我们使用Robolectric为Android应用程序编写单元测试,它一直都干的不错。最近我需要编写一个测试用例,通过每次使用不同的
在我的应用程序中有,它有一个操作,如下所示: 现在,我正在测试视图和模型,如下所示: 但是我的测试用例失败了,stacktrace如下: 正在运行2个spock测试。。。第1页,共2页 有什么问题吗。
下面是这个问题:我被要求从哪里开始一个新问题。 问题是我对JUnit了解不够,或者对等的了解不够,无法以Jeff Bowman提到的方式解决这个问题。
如何使用Spock以良好的方式(例如数据表)测试异常? 示例:具有一个方法,该方法可以抛出不同消息的异常,或者如果用户有效,则不抛出异常。 规范类本身: 变体1 这一个正在运行,但真正的意图被所有的when/then标签和反复调用弄得一团糟。 变式2 这个不工作,因为Spock在编译时提出了这个错误: 异常条件只允许在'然后'块 变式3 这个不工作,因为Spock在编译时提出了这个错误: 异常条件