Как исправить тесты AssertJ Swing, которые проходят локально, но не работают на CI-сервере?JAVA

Программисты JAVA общаются здесь
Anonymous
Как исправить тесты AssertJ Swing, которые проходят локально, но не работают на CI-сервере?

Сообщение Anonymous »

Все мои модульные тесты GUI с Assertj Swing (версия 3.17.0) проходят локально, но иногда они терпят неудачу на CI-сервере. Если я буду повторять попытку достаточно долго, в конечном итоге набор тестов станет зеленым. Мне трудно понять, как исправить эти тесты.
Я использую Java 8 и Github Actions в качестве CI. Как было предложено в аналогичном вопросе, я использую VNC для запуска этих тестов в CI без головы с помощью команды:

Код: Выделить всё

./execute-on-vnc.sh mvn -B -f pom.xml clean verify
Вот пример неудачного теста (я издеваюсь над контроллером и просто проверяю, что нажатие кнопки действительно вызывает метод контроллера с правильными аргументами):

Код: Выделить всё

@Mock private ItemController controller;

@Test @GUITest
public void testAddItemButtonShouldDelegateToControllerAddItem() {
window.textBox("itemIdTextField").enterText("1");
window.textBox("itemNameTextField").enterText("Some Item");
window.button(JButtonMatcher.withName("addItemButton")).click();
verify(controller).addItem(new Item("1", "Some Item"));
}
Вот очень простой код для обработки кликов по JButton:

Код: Выделить всё

addItemButton.addActionListener(e ->
controller.addItem(new Item(itemIdTextField.getText(), itemNameTextField.getText()))
);
Тест каждый раз проходит локально без проблем, но на CI часто завершается с этой ошибкой:

Код: Выделить всё

testAddItemButtonShouldDelegateToControllerAddItem(com.example.view.swing.ItemSwingViewTest)
Time elapsed: 0.985 sec

Вернуться в «JAVA»