Тесты JUnit 5 выполняются параллельно внутри IntelliJ и локально с Maven, но не внутри контейнера Maven Docker в Google Cloud Build - PullRequest
1 голос
/ 11 октября 2019

Я использую JUnit 5 в своем проекте Maven.

Мой junit-platform.properties выглядит следующим образом:

junit.jupiter.execution.parallel.enabled=true
junit.jupiter.execution.parallel.mode.default=concurrent

При выполнении тестов внутри IntelliJ или с Maven локально, тестывыполняется параллельно.

Однако при запуске их в Cloud Build внутри контейнера Maven Docker они запускаются последовательно.

Вот как они называются:

steps:
  - name: 'maven:3-jdk-11-slim'
    args: [
      'mvn',
      # https://stackoverflow.com/a/53513809/3067148
      '-Dorg.slf4j.simpleLogger.showDateTime=true',
      '-Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss,SSS',
      '-B',
      'test'
    ]

В чем может быть причина, почему они не выполняются параллельно?

1 Ответ

3 голосов
/ 11 октября 2019

Свойства, такие как желаемый параллелизм и максимальный размер пула, можно настроить с помощью ParallelExecutionConfigurationStrategy. Платформа JUnit предоставляет две реализации из коробки: dynamic и fixed. В качестве альтернативы вы можете реализовать собственную стратегию.

Имейте в виду, что класс ParallelExecutionConfigurationStrategy все еще находится в состоянии «ЭКСПЕРИМЕНТАЛЬНО» и еще не стабилен. Может произойти непреднамеренное поведение.

Поскольку вы не задаете конкретную стратегию конфигурации, применяется следующий раздел:

Если стратегия конфигурации не установлена, JUnit Jupiter использует dynamicстратегия конфигурации с коэффициентом 1. Следовательно, желаемый параллелизм будет равен количеству доступных процессоров / ядер.

Более подробную информацию можно найти по адресу https://junit.org/junit5/docs/current/user-guide/#writing-tests-parallel-execution-config

...