我从使用 DrJava 的 Java 开始。我正在关注 TDD 进行学习。我创建了一个假设验证某些数据和无效数据的方法,该方法假设抛出异常。
它按预期抛出异常。但我不确定,如何编写单元测试来期待异常。
在 .net 中,我们有ExpectedException(typeof(exception))
. 有人可以指出 DrJava 中的等价物吗?
谢谢
如果您使用的是 JUnit,您可以这样做
@Test(expected = ExpectedException.class)
public void testMethod() {
...
}
查看API以了解更多详细信息。
如果您只是想测试在您的测试方法中某处引发了特定异常类型的事实,那么已经显示@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
}
}