我在用

<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中所述,这意味着要忽略错误的假设。

10-07 19:15
查看更多