如何在DrJava中测试异常?

时间:2013-08-30 18:53:18

标签: java drjava

我使用DrJava开始使用Java。我正在关注TDD学习。我创建了一个方法,假设验证一些数据和无效数据,该方法假设抛出异常。

按预期抛出异常。但我不确定,如何编写单元测试以期待异常。

在.net中我们有ExpectedException(typeof(exception))。有人能指出DrJava中的等价物吗?

由于

2 个答案:

答案 0 :(得分:2)

如果您使用的是JUnit,则可以执行

@Test(expected = ExpectedException.class)
public void testMethod() {
   ...
}

有关详细信息,请查看API

答案 1 :(得分:0)

如果您只想测试在测试方法中某处抛出特定异常类型的事实,那么已经显示的@Test(expected = MyExpectedException.class)就可以了。

对于异常的更高级测试,您可以使用@Rule,以进一步优化您希望抛出异常的位置,或者添加有关抛出的异常对象的进一步测试(即,消息字符串等于某个预期值或包含一些预期值:

class MyTest {

   @Rule ExpectedException expected = ExpectedException.none();
   // above says that for the majority of tests, you *don't* expect an exception

   @Test
   public testSomeMethod() {
   myInstance.doSomePreparationStuff();
   ...
   // all exceptions thrown up to this point will cause the test to fail

   expected.expect(MyExpectedClass.class);
   // above changes the expectation from default of no-exception to the provided exception

   expected.expectMessage("some expected value as substring of the exception's message");
   // furthermore, the message must contain the provided text

   myInstance.doMethodThatThrowsException();
   // if test exits without meeting the above expectations, then the test will fail with the appropriate message
   }

}