JUnit相当于NUnit Assert.Inconclusive?

时间:2014-10-15 06:43:15

标签: java junit nunit

我是.Net开发人员,对Java和JUnit来说是全新的。

我在某些情况下习惯使用NUnit Assert.Inconclusive()方法,但我在JUnit中没有遇到同样的事情。

我在JUnit网站上搜索了一下,以及Google和stackoverflow上的一些内容。乍一看,看起来在JUnit中没有NUnit Assert.Inconclusive()方法的等价物。

真的是这样吗?

4 个答案:

答案 0 :(得分:5)

我在NUnit中使用Inconclusive来断言何时不满足测试的前提条件。

例如,如果您的测试需要读取文件然后使用该输入执行某些操作,并且可能缺少文件或运行测试的用户没有读取文件的权限 - 则测试不应该失败-se,因为你的算法可能没有任何问题,运行测试的环境就会出现问题。

另一个用例是,如果您想编写一个与数据库相关的集成测试。如果数据库没有运行或无法连接,那么您的测试确实没有结果,而不是失败 - 由于环境问题,它甚至从未开始运行。

为此,我建议@Ignore不是你想要的,因为这会使你的测试根本不运行。相反,您想要使用各种Assume方法。

答案 1 :(得分:1)

与NUnit Assert.Inconclusive()相当的JUnit是@ignore注释。只需将注释添加到您的测试方法中即可被忽略。

示例:

@Ignore
@Test
public void anIncompleteTest() 
{
    // incomplete test stuff in here
}

*出于可读性原因添加此答案,因为没有人给出明确的答案,但答案有点隐藏在评论中。 感谢@ChristopheDufour&& @Hans。

答案 2 :(得分:1)

您可以使用assumptions,也可以自行投注AssumptionViolatedException

public static void inconclusive() {
    throw new AssumptionViolatedException("Inconclusive");
}

这是为了表明不能依赖测试结果,并在IntelliJ中显示测试被忽略。

  

失败的假设并不意味着代码被破坏,而是测试没有提供有用的信息。默认的JUnit运行器将失败假设的测试视为忽略。自定义跑步者可能表现不同。

答案 3 :(得分:-3)

我不知道NUnit。

但如果您想通过测试,可以使用Asset.fail

或者有没有理由使用这种方法?