【问题标题】:How do you customize exception handling behavior in JUnit 3?如何在 JUnit 3 中自定义异常处理行为?
【发布时间】:2010-10-12 09:39:12
【问题描述】:

我想使用 JUnit 3 实现异常检查(如在 JUnit 4 中)。例如,我希望能够编写这样的测试:

public void testMyExceptionThrown() throws Exception {
    shouldThrow(MyException.class);

    doSomethingThatMightThrowMyException();
}

当且仅当抛出 MyException 时,这应该成功。 JUnit 中有 ExceptionTestCase 类,但我想要每个 test* 方法可以决定使用或不使用的东西。实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: java unit-testing exception junit


    【解决方案1】:

    解决办法:

    public void testMyExceptionThrown() throws Exception {
        try {
          doSomethingThatMightThrowMyException();
          fail("Expected Exception MyException");
        } catch(MyException e) {
          // do nothing, it's OK
        }
    }
    

    适合你的想法吗?

    还可以查看 this thread,其中有人为 JUnit3 创建了代理解决方案,这似乎是解决您的问题的另一种可能性。

    【讨论】:

      【解决方案2】:

      没有必要实现自己的解决方案,因为已经有一个可以与 JUnit3(和任何其他测试框架)一起使用的解决方案:catch-exception

      【讨论】:

        【解决方案3】:

        最简单的方法是使用 Execute Around 习惯用法来抽象出您通常会编写的 try-catch。

        更复杂的是注意到TestCase 只是一个Test。我忘记了细节,但我们可以覆盖测试的执行(框架最初通过Test 中指定的run(TestResult) 调用)。在那个覆盖中,我们可以根据 Execute Around 放置 try-catch。 testXxx 方法应该调用一个 set 方法来安装预期的异常类型。

        【讨论】:

          猜你喜欢
          • 2013-05-11
          • 2021-05-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-09
          • 2023-03-07
          • 2023-04-08
          • 2011-06-11
          相关资源
          最近更新 更多