我正在清理我们的测试套件,我看到的一件事是,在展开的参数化Spock测试中,maven surefire报告了一个额外的“测试”,用于无数据的标题行。这是使用Spock 2.3。下面是一个示例测试文件:
package com.sample.utility
import org.joda.time.LocalDate
import spock.lang.Specification
class DateUtilityTest extends Specification {
def "#years years from today being over 21 is #result"() {
expect:
DateUtility.isOver21(new LocalDate().plusYears(years).toDate()) == result
where:
years || result
-20 || false
-21 || true
-22 || true
}
def "#years years from today being over 18 is #result"() {
expect:
DateUtility.isOver18(new LocalDate().plusYears(years).toDate()) == result
where:
years || result
-17 || false
-18 || true
-19 || true
}
}
字符串
当然,预期是运行6个测试,每个方法3个,如果我在那里运行测试,这就是Intellij报告的方式。然而,当运行mvn test时:
[INFO] Running com.sample.DateUtilityTest
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.025 s -- in com.sample.DateUtilityTest
型
这也是Jenkins报告的方式,带有测试名称:
- 从今天起的#年超过18岁是#结果
- 从今天起的#年超过21岁是#结果
- 17年后的今天超过18岁是错误的
- -18年后的今天超过18岁是真的
- 从今天起19年后超过18岁是真的
- 20年后的今天超过21岁是错误的
- -21年后的今天超过21岁是真的
- -22年后的今天超过21岁是真的
pom中的插件定义是
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.2</version>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.1</version>
</dependency>
</dependencies>
</plugin>
型
有没有一种方法可以配置这些东西,使maven不会报告对标题行的额外测试?
1条答案
按热度按时间egmofgnx1#
这是this Q/A的准副本。正如您在那里看到的,这是JUnit 5平台的特性,绝不限于Spock,而且还影响参数化的JUnit Jupiter测试。
至于如何让你的报告名称更人性化,我建议这样做:
字符串
然后,测试容器将有一个干净的名称,其中的每个参数化测试也会有一个干净的名称。在像IntelliJ IDEA这样的IDE中,它也会看起来更好。