Java AssertJ回转偶尔试验失败 上下文

Java AssertJ回转偶尔试验失败 上下文,java,swing,assertj,Java,Swing,Assertj,我得到了一个AssertJ Swing(3.9.2)测试让我头疼,有时它失败,一个ComponentLookuper声明整个组件层次结构为空。这是我在Travis istance上使用VNC的第二个选项。 有趣的是:失败只集中在这个特定的测试上,托管在一个由两个测试类组成的类中,用于抽象类的JDialog实现 :抽象类 和实现了TodoDialog。它们的工作非常相似,因此是抽象类。我开始在TodoDialog中的initFrame方法中组装UI,但随后我删除了它,并在实现的类的两个构造函数中

我得到了一个AssertJ Swing(3.9.2)测试让我头疼,有时它失败,一个ComponentLookuper声明整个组件层次结构为空。这是我在Travis istance上使用VNC的第二个选项。

有趣的是:失败只集中在这个特定的测试上,托管在一个由两个测试类组成的类中,用于抽象类的JDialog实现

  • :抽象类
  • 实现了TodoDialog。它们的工作非常相似,因此是抽象类。我开始在
    TodoDialog
    中的
    initFrame
    方法中组装UI,但随后我删除了它,并在实现的类的两个构造函数中复制了代码,因为我猜可能是测试行为的原因
牵连测试 这种奇怪的行为显示在屏幕上
NewTodoDialogTest.testClearTagsShouldRestoreTagLabel
,其他测试做得很好,一点问题也没有

[ERROR] Tests run: 6, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.404 s <<< FAILURE! - in com.riccardomalavolti.apps.todolist.view.NewTodoDialogTest
[ERROR] testClearTagsShouldRestoreTagLabel(com.riccardomalavolti.apps.todolist.view.NewTodoDialogTest)  Time elapsed: 0.727 s  <<< ERROR!
org.assertj.swing.exception.ComponentLookupException: 
Unable to find component using matcher org.assertj.swing.core.NameMatcher[name='tagComboBox', type=javax.swing.JComboBox, requireShowing=true].

Component hierarchy:
com.riccardomalavolti.apps.todolist.view.NewTodoDialog[name='dialog1', title='New To Do ', enabled=true, modal=false, visible=true, showing=true]

        at com.riccardomalavolti.apps.todolist.view.NewTodoDialogTest.testClearTagsShouldRestoreTagLabel(NewTodoDialogTest.java:146)


我尝试使用awavility,为面板/标签/按钮设置等待,但这不起作用,这对我来说是有意义的,因为其他测试(与相同组件交互)做得很好。我曾尝试在本地机器上使用脚本在vnc上执行测试,但它冻结了KDE

有人有什么想法吗?这是一个非常棘手的问题

    @Test @GUITest
    public void testClearTagsShouldRestoreTagLabel() {
        // Selecting an element
        window.comboBox("tagComboBox").selectItem(0);
        assertThat(window.comboBox("tagComboBox").selectedItem()).isEqualTo("Bar");
        assertThat(window.label("tagLabel").text()).isEqualTo("(Bar)");

        // Click on Clear Tag
        window.button("clearButton").click();
        assertThat(window.label("tagLabel").text()).isEqualTo(NewTodoDialog.TAG_LBL_NO_TAG_TEXT);
        assertThat(window.comboBox("tagComboBox").selectedItem()).isNull();
    }