我使用DrJava开始使用Java。我正在关注TDD学习。我创建了一个方法,假设验证一些数据和无效数据,该方法假设抛出异常。
按预期抛出异常。但我不确定,如何编写单元测试以期待异常。
在.net中我们有ExpectedException(typeof(exception))
。有人能指出DrJava中的等价物吗?
由于
答案 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
}
}