JUnit等同于NUnitAssert,是否不确定?

kx7yvsdv  于 2022-11-11  发布在  其他
关注(0)|答案(4)|浏览(243)

我是一个.Net开发人员,对Java和JUnit是全新的。
我习惯于在某些情况下使用NUnit Assert.Inconclusive()方法,但我在JUnit中没有遇到过同样的情况。
我浏览了一下JUnit网站以及Google和stackoverflow,一看就知道在JUnit中没有NUnitAssert.Inconclusive()方法的等价物。
真的是这样吗?

8ehkhllq

8ehkhllq1#

我在NUnit中使用Inconsulting来Assert测试的前提条件何时不满足。
例如,如果您的测试需要阅读一个文件,然后对该输入执行一些操作,而可能文件丢失或运行测试的用户没有读取该文件的权限-测试本身不应失败,因为您的算法可能没有问题,只是运行测试的环境有问题。
另一个用例是,如果你想编写一个集成测试来处理数据库的问题,如果数据库没有运行或者无法连接,你的测试就不是失败,而是没有结果--因为环境问题,它甚至没有开始运行。
对于这一点,我建议您不要使用@Ignore,因为这会使您的测试根本无法运行。相反,您要使用的是各种Assume方法。

3pvhb19x

3pvhb19x2#

你可以使用assumptions,或者抛出你自己的AssumptionViolatedException

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

这是为了表明测试结果不可靠,并将在IntelliJ中显示测试为被忽略。
失败的假设并不表示程式码已损毁,而是测试未提供任何有用的信息。预设的JUnit执行程式会忽略假设失败的测试。自订执行程式的行为可能会有所不同。

f0ofjuux

f0ofjuux3#

我正在使用IntelliJIntelliJ,为了使它工作(从this solution),我必须执行以下操作。
第一:

import org.junit.jupiter.api.Assumptions;

然后在您的测试方法中:

//noinspection ConstantConditions
Assumptions.assumeTrue(false, "Inconclusive");

您可以随意将"Inconclusive"消息更改为更明确的内容,例如给出原因。

8mmmxcuj

8mmmxcuj4#

我不知道NUNT。
但是如果你想不通过测试,你可以使用Asset.fail
或者有什么理由要用这种方法?

相关问题