Разработка Junit5 для выборочного перезапуска макета компонента - PullRequest
0 голосов
/ 09 октября 2018

У меня есть сценарий использования, как показано ниже

Для каждого теста в потоке JUnit это примерно так: 1. в @BeforeEach Stop / Start смоделированный компонент, чтобы иметь возможность получать данные 2. в @Test отправлять данныечтобы смоделировать компонент и получить ответ обратно и сделать утверждение

Улучшение, которое я ищу, должно быть в состоянии запускать / останавливать смоделированный компонент с различными настройками / настройками.

Я думаю, что есть несколько вариантов:
1. Используйте тег Junit 5 (чтобы мы знали, какие тестовые примеры используют какой тег)
2. В методе @BeforeEach внедрите класс TestInfo и получитетеги и остановить / запустить макет компонента соответственно в соответствии с тегами.

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestReporter;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

public class TestJUnit {

  @BeforeAll
  public static void onlyOnce() {
    System.out.println("only once");
  }

  MockedComponent mock;
  Actor actor;

  @BeforeEach
  public void restartComponent(TestInfo testInfo,TestReporter report) {
    System.out.println("before each "+testInfo.getDisplayName()+"|"+testInfo.getTags()+"|"+testInfo.getTestClass());
    mock.stop();
    mock.start(testInfo.getTags().iterator().next());
  }

  @ParameterizedTest
  @Tag("config1.settings")
  public void testUsingConfig1() {
    System.out.println("testHeaderValuesArePopulated ");
    actor.getDataFromComponent().assertOrderId(123);
  }

  @ParameterizedTest
  @Tag("config2.settings")
  public void testUsingConfig2() {
    actor.sendMsg("test messages 2");
    actor.getDataFromComponent().assertOrderId(123);
  }

}

Есть ли лучший способ сделать это с помощью Junit5?

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