如果junit测试的结果为“失败”,究竟意味着什么? 我假设在测试过程中发生异常,但我找不到任何有关它的信息。 也是在追踪破坏线路:Junit测试:什么是失败?
Assert.assertTrue(result);
,其中结果仅仅是一个布尔值。所以我不知道如何在这一行中发生异常。
如果junit测试的结果为“失败”,究竟意味着什么? 我假设在测试过程中发生异常,但我找不到任何有关它的信息。 也是在追踪破坏线路:Junit测试:什么是失败?
Assert.assertTrue(result);
,其中结果仅仅是一个布尔值。所以我不知道如何在这一行中发生异常。
Assert.assertTrue(result);
如果结果为false,则此断言将失败,并且您将收到AssertionError。测试的作者想要确保结果是真实的,如果它是错误的,那么就有错误,你应该检查上面的测试代码。
实际上,虽然这被称为'错误'而不是'失败' – clamp
当一个JUnit测试是“失败”,你已经得到一个AssertionException。你的情况结果是假的,它应该是真的。
失败通常意味着断言失败。例外情况将分开追踪(根据错误,iirc)。
一个失败保存失败的测试的描述,当运行它抛出的异常。在大多数情况下,描述将是单一测试。但是,如果在构造测试时遇到问题(例如,如果BeforeClass方法不是静态的),它可能会描述除单个测试之外的其他内容。
通常,failure
意味着您对测试结果的断言失败。
这只是说,你的布尔变量结果的值是false。
Assert.assertTrue(result);
表示您想检查“结果”是否为真。请注意方法名称assertTrue。当且仅当result = true时,测试用例才能通过。否则,该案件被认为是失败的。
当你没有得到你所期望的,这是一种失败。它不必是一个例外。如果你期望代码例程返回X,那么你得到的是Y,那么它就是一个失败的测试用例。
这并不意味着发生了异常,只是代码返回的值比您声明的测试值还高。与
Assert.asserFalse(result);
替换你的代码,看看本次测试没有失败
你的问题似乎是一个“Failiure”和“错误”之间的区别,因为两者最终对应一个异常被抛出。
“失败”是测试中的一个地方,您所期望的事情不会发生。 在测试,如:
TestedObject testedObject = new TestedObject(); // This is the object we test
boolean something = testedObject.computeSomething(); // The tested method
Assert.assertTrue("Something should be true", something);
// following of the test
如果你的计算(在“东西”变量)的结果,是不正确的,这意味着computeSomething方法的工作,但并不如预期;这是一个“失败”。原因可能是该方法中的一个逻辑错误。如果computeSomething()方法抛出一个意想不到的异常(计算中的NPE或其他),那么这也意味着该方法被破坏,但可能以更“残酷”的方式(缺少依赖关系,未处理的角落案件等)。该方法需要进行一些异常处理。这在JUnit说法中被称为'错误'。
现在,在这两种情况下,这意味着该方法被破坏,并且会引发异常(通过您的代码或Assert.assertXXX方法)并由TestRunner捕获。在这两种情况下简单地说“测试失败”并不罕见;因为重要的是TestedObject需要完成一些工作来获得绿条。
当然,有时候,你想测试你的代码实际上抛出一个异常,那么你会写是这样的:
TestedObject testedObject = new TestedObject(); // This is the object we test
try {
// The tested method, that is expected to throw an Exeption when given null
boolean something = testedObject.computeSomething(null);
Assert.fail("The computation should have failed");
} catch (IllegalArgumentException e) {
// Pass - This is the expected behavior
}
在这种情况下抛出一个异常,应引起既不错误,也不是失败;相反,当例外是而不是则抛出测试失败。
你可以指定消息assertTrue(“结果应该是真的,因为...”,结果) – 01es