Как кодировать один раз до и после того, как все тесты junit5 были выполнены в модуле? - PullRequest
1 голос
/ 03 апреля 2020

У меня есть многомодульный проект с весенней загрузкой, где каждый модуль создает банку. Каждый модуль имеет src/main/test с тестами junit 5. Есть ли способ запустить код до и после выполнения всех тестов в src/main/test в указанном модуле c? Например, если у меня есть 2 модуля A, и BI хочет.

  • выполнить код, прежде чем все тесты в модуле A, выполнить
  • выполнить код, все тесты модуля A выполнить
  • выполнить код до того, как все тесты в модуле B выполнят
  • выполнить код после того, как все тесты в модуле B выполнят

Ответы [ 2 ]

2 голосов
/ 03 апреля 2020

Вы можете определить порядок для методов в тестовом классе, но не для порядка тестовых классов.

Существует открытый запрос для этой функции, но пока нет слов, если JUnit его реализует: https://github.com/junit-team/junit5/issues/1948

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

Вы можете использовать наследование и аннотацию @BeforeAll, опционально с флагом для выполнения только один раз для всех наследующих классов теста.

public class ModuleBaseClass {

  private static boolean started = false;

  @BeforeAll
  public static void beforeAllMethod() {
      if (!started) {
          System.out.println("@BeforeAll static method invoked once.");
          started = true;
      }
      System.out.println("@BeforeAll static method invoked for every class.");
  }
}

public class ModuleFeature1Class extends ModuleBaseClass {

  @Test
  public void testMethod() {
      System.out.println("ModuleFeature1Class: in testMethod().");
  }
}

public class ModuleFeature2Class extends ModuleBaseClass {

  @Test
  public void testMethod() {
      System.out.println("ModuleFeature2Class: in testMethod().");
  }
}

Это выведет:

@BeforeAll static method invoked once.
@BeforeAll static method invoked for every class.
ModuleFeature1Class: in testMethod().
@BeforeAll static method invoked for every class.
ModuleFeature2Class: in testMethod().

Таким же образом вы можете использовать аннотацию @ AfterAll для выполнения после ваших тестов.

...