Как проверить сообщения, зарегистрированные приложением в Mule 4 EE - PullRequest
0 голосов
/ 15 апреля 2020

Для приложения Mule 4 EE я пишу интеграционные тесты, используя JUnit4 и Rest Assured. В тесте я пытаюсь убедиться, что определенные сообщения регистрируются приложением. Как я могу это сделать?

Я написал приложение для клиента и прикрепил его к root регистратору, но он не получает никаких сообщений. Обновление - это не работает, поскольку среда выполнения Mule выполняется в отдельном процессе, и тест не может подключиться к регистратору среды выполнения.

static class TestAppender extends AppenderSkeleton {
    public List<org.apache.log4j.spi.LoggingEvent> events =
        new ArrayList<org.apache.log4j.spi.LoggingEvent>();

    public void close() {}

    public void clearLog() {
      events.clear();
    }

    public boolean requiresLayout() {
      return false;
    }

    @Override
    protected void append(LoggingEvent event) {
      events.add(event);
    }
  }

и тесту

// is not working
@Test
public void test_log_msg() throws Exception {
 TestAppender testAppender = new TestAppender();
 Logger.getRootLogger().addAppender(testAppender);
 // perform some action that causes logging
 assertEquals(testAppender.events.size(), 1);
}

Любая помощь будет принята с благодарностью.

В частности, я пытаюсь проверить, работает ли кэширование для моего API. Я собирался сделать это, проверяя сообщения, которые я регистрирую в приложении, когда происходит кэширование. Если есть более элегантный подход к этому, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 23 апреля 2020

Не думаю, что это хороший дизайн теста. Ведение журнала не предназначено для проверки модульного тестирования. Тест будет легко сломать. Также технически реализация в Mule 4, как вы упомянули, не так проста или невозможна для такого восприятия. Добавьте к этому, что в настоящее время Mule 4 поддерживает только MUnit, а не JUnit.

Я бы порекомендовал go сделать шаг назад и подумать, что ваш тест должен действительно проверять, а именно кеширование, а не ведение журнала. Попробуйте реализовать его, используя MUnit, если это возможно.

...