我是一个.Net开发人员,对Java和JUnit是全新的。我习惯于在某些情况下使用NUnit Assert.Inconclusive()方法,但我在JUnit中没有遇到过同样的情况。我浏览了一下JUnit网站以及Google和stackoverflow,一看就知道在JUnit中没有NUnitAssert.Inconclusive()方法的等价物。真的是这样吗?
Assert.Inconclusive()
8ehkhllq1#
我在NUnit中使用Inconsulting来Assert测试的前提条件何时不满足。例如,如果您的测试需要阅读一个文件,然后对该输入执行一些操作,而可能文件丢失或运行测试的用户没有读取该文件的权限-测试本身不应失败,因为您的算法可能没有问题,只是运行测试的环境有问题。另一个用例是,如果你想编写一个集成测试来处理数据库的问题,如果数据库没有运行或者无法连接,你的测试就不是失败,而是没有结果--因为环境问题,它甚至没有开始运行。对于这一点,我建议您不要使用@Ignore,因为这会使您的测试根本无法运行。相反,您要使用的是各种Assume方法。
3pvhb19x2#
你可以使用assumptions,或者抛出你自己的AssumptionViolatedException。
AssumptionViolatedException
public static void inconclusive() { throw new AssumptionViolatedException("Inconclusive"); }
这是为了表明测试结果不可靠,并将在IntelliJ中显示测试为被忽略。失败的假设并不表示程式码已损毁,而是测试未提供任何有用的信息。预设的JUnit执行程式会忽略假设失败的测试。自订执行程式的行为可能会有所不同。
f0ofjuux3#
我正在使用IntelliJ和IntelliJ,为了使它工作(从this solution),我必须执行以下操作。第一:
IntelliJ
import org.junit.jupiter.api.Assumptions;
然后在您的测试方法中:
//noinspection ConstantConditions Assumptions.assumeTrue(false, "Inconclusive");
您可以随意将"Inconclusive"消息更改为更明确的内容,例如给出原因。
"Inconclusive"
8mmmxcuj4#
我不知道NUNT。但是如果你想不通过测试,你可以使用Asset.fail或者有什么理由要用这种方法?
4条答案
按热度按时间8ehkhllq1#
我在NUnit中使用Inconsulting来Assert测试的前提条件何时不满足。
例如,如果您的测试需要阅读一个文件,然后对该输入执行一些操作,而可能文件丢失或运行测试的用户没有读取该文件的权限-测试本身不应失败,因为您的算法可能没有问题,只是运行测试的环境有问题。
另一个用例是,如果你想编写一个集成测试来处理数据库的问题,如果数据库没有运行或者无法连接,你的测试就不是失败,而是没有结果--因为环境问题,它甚至没有开始运行。
对于这一点,我建议您不要使用@Ignore,因为这会使您的测试根本无法运行。相反,您要使用的是各种Assume方法。
3pvhb19x2#
你可以使用assumptions,或者抛出你自己的
AssumptionViolatedException
。这是为了表明测试结果不可靠,并将在IntelliJ中显示测试为被忽略。
失败的假设并不表示程式码已损毁,而是测试未提供任何有用的信息。预设的JUnit执行程式会忽略假设失败的测试。自订执行程式的行为可能会有所不同。
f0ofjuux3#
我正在使用
IntelliJ
和IntelliJ
,为了使它工作(从this solution),我必须执行以下操作。第一:
然后在您的测试方法中:
您可以随意将
"Inconclusive"
消息更改为更明确的内容,例如给出原因。8mmmxcuj4#
我不知道NUNT。
但是如果你想不通过测试,你可以使用Asset.fail
或者有什么理由要用这种方法?