1

如果 junit 测试抛出异常:

public void mytest throws InvalidUsageException

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

如果是这样,将异常包装在 try/catch 块中并明确抛出异常失败是否更好?

4

4 回答 4

2

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

其次,我不会尝试捕获。如果发生异常,您希望让它发生,以便您知道发生了错误,而不仅仅是方法本身的错误。

于 2013-11-06T15:10:45.213 回答
2

如果抛出此异常,测试将失败。如果你的测试是看是否有某个异常抛出,你应该像这样开始你的测试

@Test(expected=InvalidUsageException.class)
  public void mytest {
    ...
  }
于 2013-11-06T15:11:10.483 回答
1

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

public void mytest() {
  try {
     // your code
     fail();
  } catch (InvalidUsageException e) {
     // success 
  }
}

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

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

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

于 2013-11-06T15:13:49.230 回答
1

是的,它们会失败。如果您期望异常然后使用@Test(expect=ExceptionClassName.class

于 2013-11-06T15:11:28.063 回答