Обертывание тестов JUnit (в Eclipse)

Все мои тесты для моего кода Groovy похожи на это

public void testButtons() {
    try {
         page.getButtons();
    } catch (Exception e) {
         throw org.codehaus.groovy.runtime.StackTraceUtils.sanitize(e);     
    }
}

потому что я должен санировать любой возможный StackTrace, который появляется (иначе, очень трудно читать, так как это имеет весь метакод Groovy). Там какой-либо путь состоит в том, чтобы указать, что все тесты JUnit перенесены в особенности путь (как обработчик ошибок)?

Примечание: Я выполняю их в Eclipse, но если бы существует способ сделать это в IntelliJ или Netbeans, который был бы хорош для знания.

6
задан Dan Rosenstark 4 May 2010 в 22:38
поделиться

1 ответ

Да, используйте правило. По сути, у вас должен быть класс, реализующий интерфейс MethodRule, который обрабатывает обработку исключений в методе apply, заменяя его собственную реализацию Statement, в которой есть try / catch.

Чтобы использовать правило, вы определяете поле в тестовом классе следующим образом:

  @Rule public MethodRule exceptionCleanser = new ExceptionCleanser();

Первая реализация, вероятно, будет выглядеть примерно так:

  public class ExceptionCleanser implements MethodRule {

      public Statement apply(final Statement base, FrameworkMethod method, Object target) {
          return new Statement() {
               public void evaluate() throws Throwable {
                 try {
                    base.evaluate();
                 } catch (Exception e) {
                       throw org.codehaus.groovy.runtime.StackTraceUtils.sanitize(e);     
                 }
               }
          };
      }
  }

Вышеупомянутое полностью не тестировалось, но вы должны иметь представление . Аннотация @Rule была представлена ​​в JUnit 4.7, поэтому вам может потребоваться обновить ее, чтобы использовать ее.

7
ответ дан 17 December 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: