如何解决如何修复本地通过但在CI服务器中失败的AssertJ Swing测试?
我的带有Assertj Swing(版本3.17.0)的GUI单元测试全部在本地通过,但有时它们在CI服务器中失败。如果我重试的时间足够长,最终测试套件将变为绿色。我很难弄清楚如何解决这些测试。
我正在使用Java 8和Github Actions作为CI。根据{{3}}中的建议,我正在使用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 <<< FAILURE!
Wanted but not invoked:
controller.addItem(
Item{id='1',name='Some Item'}
);
Actually,there were zero interactions with this mock.
我无法弄清这些不稳定测试的原因。
我尝试过的事情:
一切都没有运气。我在做错什么吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。