我是.Net开发人员,对Java和JUnit来说是全新的。
我在某些情况下习惯使用NUnit Assert.Inconclusive()
方法,但我在JUnit中没有遇到同样的事情。
我在JUnit网站上搜索了一下,以及Google和stackoverflow上的一些内容。乍一看,看起来在JUnit中没有NUnit Assert.Inconclusive()
方法的等价物。
真的是这样吗?
答案 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)