2011-07-06 140 views
0

如果junit测试的结果为“失败”,究竟意味着什么? 我假设在测试过程中发生异常,但我找不到任何有关它的信息。 也是在追踪破坏线路:Junit测试:什么是失败?

Assert.assertTrue(result); 

,其中结果仅仅是一个布尔值。所以我不知道如何在这一行中发生异常。

+0

你可以指定消息assertTrue(“结果应该是真的,因为...”,结果) – 01es

回答

3

Assert.assertTrue(result);

如果结果为false,则此断言将失败,并且您将收到AssertionError。测试的作者想要确保结果是真实的,如果它是错误的,那么就有错误,你应该检查上面的测试代码。

+0

实际上,虽然这被称为'错误'而不是'失败' – clamp

0

当一个JUnit测试是“失败”,你已经得到一个AssertionException。你的情况结果是假的,它应该是真的。

0

失败通常意味着断言失败。例外情况将分开追踪(根据错误,iirc)。

0

documentation -

一个失败保存失败的测试的描述,当运行它抛出的异常。在大多数情况下,描述将是单一测试。但是,如果在构造测试时遇到问题(例如,如果BeforeClass方法不是静态的),它可能会描述除单个测试之外的其他内容。

通常,failure意味着您对测试结果的断言失败。

0

这只是说,你的布尔变量结果的值是false。

Assert.assertTrue(result); 

表示您想检查“结果”是否为真。请注意方法名称assertTrue。当且仅当result = true时,测试用例才能通过。否则,该案件被认为是失败的。

当你没有得到你所期望的,这是一种失败。它不必是一个例外。如果你期望代码例程返回X,那么你得到的是Y,那么它就是一个失败的测试用例。

0

这并不意味着发生了异常,只是代码返回的值比您声明的测试值还高。与
Assert.asserFalse(result);
替换你的代码,看看本次测试没有失败

2

你的问题似乎是一个“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 
    } 

在这种情况下抛出一个异常,应引起既不错误,也不是失败;相反,当例外是而不是则抛出测试失败。