我在用
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
</plugin>
和
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
测试我的项目。
我有一个非常简单的测试方法
@Test
public void test() throws IOException {
Assume.assumeTrue("I am broken, so I am ignored", false);
// some tests
}
当我使用Maven构建项目时,在surefire xml文件中得到以下代码片段
<testcase name="test" classname="com.stackoverflower.experiment.Test" time="0">
<skipped/>
</testcase>
我认为这不是surefire的正确行为,因为假设失败的处理方式与忽略的处理方式相同,因此应该遵循与忽略的记录标准相同的记录标准。 This JIRA明确指出应记录原因。
你怎么看?有没有一种解决方法可以将该消息发送到xml文件中?
谢谢
更新1
我不能使用@Ignore的原因是因为我不想将测试硬编码为被忽略。我希望基于一些无法在编码时确定的前提条件来跳过它。
最佳答案
当Assume
的组合对于给定的DataPoint
无效时,JUnit Theories中通常使用的Theory
方法。您应该使用Assert
类,而不是Assume
。这是您的示例测试,已重写为使用正确的类:
@Test
public void test() throws IOException {
Assert.assertTrue("I am broken", false);
// some tests
}
如Javadoc for Assume中所述,这意味着要忽略错误的假设。