【问题标题】:Add method call in test name with Unroll using Spock使用 Spock 在测试名称中添加方法调用
【发布时间】:2015-05-18 15:18:36
【问题描述】:

我有一个代码,我想将方法​​调用值放在方法的名称中。

        @Unroll
        def 'check #file other text'() {
        setup:
        def file = allProperties.keySet().getAt(0)
        ...
        where:
        ...

现在我创建了一个特殊变量,其目的只是为了命名方法。我可以这样做吗:

        static def allProperties
        def setupSpec(){
           allProperties== [1: 'asd', 2: 'ddd']
        }
        @Unroll
        def 'check #allProperties.keySet().getAt(0) other text'() {
        ....
        where:
        ...

编辑:添加 setupSpec()

【问题讨论】:

  • 用实际测试不会影响的东西来命名你的测试有什么好处?如果这个测试后来向我抛出“检查 lerl 其他文本”,我希望,那个 lerl 会以某种方式影响测试,并且它是 where 的一部分,因此是展开的原因。
  • 如果我把它放在 Unroll 中,那么数据表中所有位置的文件值必须相同。

标签: groovy spock unroll


【解决方案1】:

Unroll 支持属性访问或零参数方法。所以你可以:

@Unroll
def "check #allProperties.keySet().first() other text"() { .. }

如果allProperties 是类级别变量或@Shared 变量或在where: 块下提及。

【讨论】:

  • 是的,它是静态的,我试过你说的,但结果是:“...Error:#allProperties.keySet().first..” 但我在 setupSpec() 中初始化它可以是问题吗?
  • 你能创建一个简单的规范脚本来复制问题吗?我可以调查一下。
  • 您必须改用@Shared allProperties
  • @Shared 有效,但是Shared 和static 有什么区别?
  • @Shared 变量可以在where: 中使用,类似于静态。但是我现在再次看到您在setupSpec 中使用断言而不是实例化。 allProperties == [1: 'asd', 2: 'ddd']。你能不能把它改成allProperties = [1: 'asd', 2: 'ddd'],用静态代替@Shared
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
相关资源
最近更新 更多