Java 如何在JUnit3中定制异常处理行为?
我想使用JUnit3实现异常检查(如JUnit4)。例如,我希望能够编写如下测试:Java 如何在JUnit3中定制异常处理行为?,java,unit-testing,exception,junit,Java,Unit Testing,Exception,Junit,我想使用JUnit3实现异常检查(如JUnit4)。例如,我希望能够编写如下测试: public void testMyExceptionThrown() throws Exception { shouldThrow(MyException.class); doSomethingThatMightThrowMyException(); } 当且仅当抛出MyException时,此操作才会成功。 JUnit中有ExceptionTestCase类,但我希望每个test*方法都可
public void testMyExceptionThrown() throws Exception {
shouldThrow(MyException.class);
doSomethingThatMightThrowMyException();
}
当且仅当抛出MyException时,此操作才会成功。
JUnit中有ExceptionTestCase类,但我希望每个test*方法都可以决定使用或不使用它。实现这一目标的最佳方法是什么?解决方案是:
public void testMyExceptionThrown() throws Exception {
try {
doSomethingThatMightThrowMyException();
fail("Expected Exception MyException");
} catch(MyException e) {
// do nothing, it's OK
}
}
适合你的想法
还有一个例子,有人为JUnit3创建了一个代理解决方案,这似乎是解决您问题的另一种可能。最简单的方法是使用executearound习惯用法来抽象出您通常编写的try-catch
更复杂的是要注意,
TestCase
只是一个测试
。我忘记了细节,但我们可以覆盖测试的执行(框架最初通过run(TestResult)
调用测试,该调用在test
中指定)。在该覆盖中,我们可以根据Execute-Around放置try-catch。testXxx
方法应该调用set方法来安装预期的异常类型。不需要实现您自己的解决方案,因为已经有一个可以用于JUnit3(和任何其他测试框架):