Groovy - Spock数据表预期值

zujrkrfu  于 2022-11-01  发布在  其他
关注(0)|答案(2)|浏览(149)

我有一个用Spock编写单元测试的方法,这个方法接受两个字符串作为输入,并返回一个整数值,〉0和〈0,具体取决于方法中的某些条件(基本上是一个字符串比较器)。现在我想使用数据表来测试这个方法,但问题是我们不'我不知道这个方法返回的具体值,只知道在某些情况下它可能会更大或更小。如何在Spock中使用数据表Assert。我已经为这样的情况编写了单独的测试,但不知道这是否可以实现。

0x6upsns

0x6upsns1#

现在我想使用数据表来测试这个方法,但问题是我们不知道这个方法将返回的具体值,而只是知道在某些情况下它可能会更大或更小。
如果您有一对输入,并且您期望MUT的返回值应该高于或低于某个特定值,则将该值包含在数据表中,并在Assert中Assert返回值以您期望的方式与数据表值相关。

vcirk6k6

vcirk6k62#

你可以使用Math.signum将你的结果压缩到(-1,0,1)。然后你就可以很容易地写你的数据表了。

import spock.lang.*

class ASpec extends Specification {
  def "compare"() {
    expect: 
        Math.signum(comparator(a, b)) == result

    where:
        a | b || result
        1 | 2 || -1
        1 | 9 || -1
        1 | 1 || 0
        5 | 2 || 1    
        4 | 2 || -1 // fail intentionally
  }

    int comparator(int a, int b) {
        a - b
    }
}

Groovy Web Console

相关问题