Окружающая среда
- OSX 10.13.5
- Java 10.0.1 2018-04-17
- Apache Maven 3.5.2
- Spring Boot 2.0.3.RELEASE
- Плагин Maven Surefire 2.22.0
Выпуск
У меня есть тест, который надежно проходит:
public class TransformerTest {
private final MyTransformer transformer = new MyTransformerImpl();
@Rule
public final OutputCapture outputCapture = new OutputCapture();
@Test
public void successShouldLogSuccessMessages() {
final B result = transformer.transform(new A());
outputCapture.expect(containsString("First message"));
outputCapture.expect(containsString("Second message"));
}
}
Преобразователь использует log4j для записи двух строк через log.debug("First message")
и log.debug("Second message")
. Я могу выполнить этот тест 1000 раз, и он пройдет.
Когда я представлю этот тестовый класс
@WebFluxTest
@RunWith(SpringRunner.class)
public class DummyTest {
@Autowired
private WebTestClient client;
@MockBean
private MyService service;
@Test
public void dummyTest() {
doRequest()
.expectStatus().isAccepted()
.expectBody().isEmpty();
}
private WebTestClient.ResponseSpec doRequest() {
return client.post()
.uri("/")
.exchange();
}
}
Новый тест надежно проходит - однако первый тест (который, по-видимому, не связан с этим) теперь не проходит только тогда, когда сборка выполняется с Maven .
- Запуск первого автономного теста через IDE даст 100% надежный проход.
- Запуск всего набора тестов проекта в IDE (не через Maven) также дает 100% надежный проход.
- Удаление результатов второго теста при первом прохождении снова 100% надежно - и это единственное отличие исходного кода.
Сообщение об ошибке:
TransformerTest.successShouldLogSuccessMessages
Ожидается: (строка, содержащая «Первое сообщение» и строка, содержащая «Второе сообщение»), но: строка, содержащая «Первое сообщение», была «»
Кто-нибудь знает, что может происходить? Является ли первый тест в корне ошибочным, и введение второго теста просто выявляет этот недостаток, или введение второго теста в корне изменило поведение набора тестов?
Конфигурация
Моя полная верная конфигурация:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<excludedGroups>com.example.IntegrationTest</excludedGroups>
</configuration>
</plugin>
Ни один из этих тестов не входит в группу интеграционных тестов. Я не изменил верные значения по умолчанию для параллелизма или разветвления. Поскольку это проблема, с которой я сталкиваюсь при работе с Maven через верный огонь, возможно ли, что это состояние гонки?
Я могу воспроизвести эту проблему со 100% надежностью на нескольких машинах.