gpt4 book ai didi

java - 简单的 TestFX 示例失败

转载 作者:搜寻专家 更新时间:2023-10-31 20:08:21 24 4
gpt4 key购买 nike

在 Eclipse photon 和 fx9 或 fx11(无关紧要)中使用 TestFX 4.0.14,simple example test来自 TestFX wiki 的 should_click_on_button()

失败
Expected: Labeled has text "clicked!"
but: was "click me!"

当查看屏幕时,会显示 Pane 及其包含的按钮,但鼠标会移动到其他地方:因此永远不会单击按钮,因此它的文本也不会更改。

知道出了什么问题/如何解决吗?

测试代码(为方便起见全部从wiki复制过来):

import org.junit.Test;
import org.testfx.framework.junit.ApplicationTest;

import static org.testfx.api.FxAssert.*;
import static org.testfx.matcher.control.LabeledMatchers.*;

import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

/**
* Simple testfx example from testfx wiki:
* https://github.com/TestFX/TestFX/wiki/Getting-Started
*
*/
public class ClickApplicationTest extends ApplicationTest {
@Override
public void start(Stage stage) {
Parent sceneRoot = new ClickApplication.ClickPane();
Scene scene = new Scene(sceneRoot, 100, 100);
stage.setScene(scene);
stage.show();
}

@Test
public void should_contain_button() {
// expect:
verifyThat(".button", hasText("click me!"));
}

@Test
public void should_click_on_button() {
// when:
clickOn(".button");

// then:
verifyThat(".button", hasText("clicked!"));
}


}

应用代码:

import javafx.application.Application;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
* Simple testfx example from testfx wiki:
* https://github.com/TestFX/TestFX/wiki/Getting-Started
*
*/
public class ClickApplication extends Application {
// application for acceptance tests.
@Override public void start(Stage stage) {
Parent sceneRoot = new ClickPane();
Scene scene = new Scene(sceneRoot, 100, 100);
stage.setScene(scene);
stage.show();
}

// scene object for unit tests
public static class ClickPane extends StackPane {
public ClickPane() {
super();
Button button = new Button("click me!");
button.setOnAction(actionEvent -> button.setText("clicked!"));
getChildren().add(button);
}
}
}

更新:

TestFX 中发现了一个 Unresolved 问题那可能匹配。它提到了一个 core fx bug这可能是原因 - 但似乎不是:它已在 fx11 中修复(已验证核心错误报告中的代码已通过),但 testfx 问题仍然存在..

最佳答案

它对我有用。

无论如何,您可能会在 UI 更改发生之前检查它,因为它是在 FX 应用程序线程中完成的,而不是在执行测试的线程中完成的。

使用这条线

WaitForAsyncUtils.waitForFxEvents()

clickOnverifyThat 调用之间。

关于java - 简单的 TestFX 示例失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52605298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com