Как настроить поведение обработки исключений в JUnit 3? - PullRequest
3 голосов
/ 10 марта 2009

Я хочу реализовать проверку исключений (как в JUnit 4) с использованием JUnit 3. Например, я хотел бы иметь возможность писать тесты следующим образом:

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

    doSomethingThatMightThrowMyException();
}

Это должно быть успешным, если и только если выброшено исключение MyException. В JUnit есть класс ExceptionTestCase, но я хочу кое-что, что каждый метод test * может решить использовать или не использовать. Каков наилучший способ добиться этого?

Ответы [ 3 ]

9 голосов
/ 10 марта 2009

Будет ли решение:

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

подойдет для того, о чем ты думаешь?

Также посмотрите на эту ветку , где кто-то создал Proxy-решение для JUnit3, что, похоже, является еще одной возможностью решить вашу проблему.

2 голосов
/ 22 июня 2012

Нет необходимости реализовывать собственное решение, потому что уже есть такое, которое можно использовать с JUnit3 (и любой другой платформой тестирования): catch-exception .

1 голос
/ 10 марта 2009

Самый простой подход - использовать идиому «Выполнить вокруг», чтобы абстрагироваться от того, что вы обычно пишете.

Более сложно отметить, что TestCase - это просто Test. Я забыл подробности, но мы можем отменить выполнение теста (который изначально вызывает фреймворк через run(TestResult), указанный в Test). В этом переопределении мы можем разместить try-catch согласно Execute Around. Метод testXxx должен вызывать метод set для установки ожидаемого типа исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...