我有一个用Spock编写单元测试的方法,这个方法接受两个字符串作为输入,并返回一个整数值,〉0和〈0,具体取决于方法中的某些条件(基本上是一个字符串比较器)。现在我想使用数据表来测试这个方法,但问题是我们不'我不知道这个方法返回的具体值,只知道在某些情况下它可能会更大或更小。如何在Spock中使用数据表Assert。我已经为这样的情况编写了单独的测试,但不知道这是否可以实现。
0x6upsns1#
现在我想使用数据表来测试这个方法,但问题是我们不知道这个方法将返回的具体值,而只是知道在某些情况下它可能会更大或更小。如果您有一对输入,并且您期望MUT的返回值应该高于或低于某个特定值,则将该值包含在数据表中,并在Assert中Assert返回值以您期望的方式与数据表值相关。
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
2条答案
按热度按时间0x6upsns1#
现在我想使用数据表来测试这个方法,但问题是我们不知道这个方法将返回的具体值,而只是知道在某些情况下它可能会更大或更小。
如果您有一对输入,并且您期望MUT的返回值应该高于或低于某个特定值,则将该值包含在数据表中,并在Assert中Assert返回值以您期望的方式与数据表值相关。
vcirk6k62#
你可以使用Math.signum将你的结果压缩到(-1,0,1)。然后你就可以很容易地写你的数据表了。
Groovy Web Console