Junit测试:什么是失败?

时间:2011-07-06 08:36:06

标签: java eclipse junit

如果junit测试的结果是“失败”,这究竟是什么意思? 我认为测试期间发生了异常,但我找不到任何有关它的信息。 故障跟踪中的行也是:

Assert.assertTrue(result);

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

7 个答案:

答案 0 :(得分:3)

Assert.assertTrue(结果);

如果结果为false,则此断言将失败,并且您将获得AssertionError。测试的作者想要确保结果是真的,如果它是假的,那么出现问题,你应该检查上面的测试代码。

答案 1 :(得分:2)

您的问题似乎是“失败”和“错误”之间的区别,因为两者最终都会对应于抛出异常。

“失败”是您测试中不会发生任何事情的地方。 在像以下的测试中:

  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

如果计算结果('something'变量)不成立,则表示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
  }

在这种情况下,抛出异常应该既不会导致错误也不会导致失败;相反,当异常抛出时,测试应该失败。

答案 2 :(得分:0)

当JUnit测试“失败”时,你得到了一个AssertionException。在你的案例结果中的手段是错误的,它应该是真的。

答案 3 :(得分:0)

失败通常意味着断言失败。单独跟踪例外情况(错误,iirc)。

答案 4 :(得分:0)

来自documentation -

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

通常,failure表示您对测试结果的断言失败。

答案 5 :(得分:0)

这只是意味着,布尔变量结果的值为false。

Assert.assertTrue(result);

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

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

答案 6 :(得分:0)

这并不意味着发生了异常,只是代码返回了另一个值而不是测试断言。用
替换你的代码    Assert.asserFalse(result);
看看这个测试是否没有失败