关于java:如果抛出异常会测试失败吗?

If an exception is thrown will test fail?

本问题已经有最佳答案,请猛点这里访问。

如果junit测试抛出异常:

1
public void mytest throws InvalidUsageException

这是否意味着如果测试抛出InvalidUsageException,那么测试将失败?

如果是这样,更好的设计是将一个异常包装在try / catch块中,并且抛出异常的显式失败?


如果抛出此异常,测试将失败。
如果您的测试是要查看是否存在某个异常抛出,您应该开始测试

1
2
3
4
@Test(expected=InvalidUsageException.class)
  public void mytest {
    ...
  }

首先,是的,你的测试将失败。

其次,我不会用try catch包裹。 如果发生异常,您希望让它发生,以便您意识到发生了错误,而不仅仅是方法本身的错误。


你说的可能是一个解决方案

1
2
3
4
5
6
7
8
public void mytest() {
  try {
     // your code
     fail();
  } catch (InvalidUsageException e) {
     // success
  }
}

更快的方法(但我不会说更清楚)

1
2
3
4
@Test (expected = Exception.class)
public void mytest() {
  // your code
}

更多这样的例子在http://www.vogella.com/articles/JUnit/article.html


是的,这将失败。 如果你期望exceptin然后使用@Test(expect=ExceptionClassName.class