gpt4 book ai didi

java - 开始使用 TestFx

转载 作者:行者123 更新时间:2023-11-28 20:02:28 25 4
gpt4 key购买 nike

我在让 TestFx 与 Oracle 的 JavaFx HelloWorld 应用程序一起工作时遇到了一些问题:

public class HelloWorld extends Application {
public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World!");
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {

@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});

StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}

TestFx 联合测试:

class MyTest extends GuiTest {
public Parent getRootNode() {
return nodeUnderTest;
}

对于这个例子,nodeUnderTest 应该是什么?

最佳答案

TestFx 是一个单元测试框架,因此它旨在获取您的 GUI 实现的一部分并对其进行测试。这要求您首先使这些部分可用,并通过使用 id 标记它们来测试目标(按钮等)。

getRootNode()为后面的GUI测试的测试过程提供根。在您上面的示例中,StackPane 根可能是一个候选者......但这需要您将其用于测试以允许:

 class MyTest extends GuiTest {
public Parent getRootNode() {
HelloWorld app = new HelloWorld();
return app.getRoot(); // the root StackPane with button
}
}

因此必须修改应用程序以实现 getRoot(),返回 StackPane 及其内容以进行测试,而不需要 start() 方法。

你可以在上面运行测试......

@Test
public void testButtonClick(){
final Button button = find("#button"); // requires your button to be tagged with setId("button")
click(button);
// verify any state change expected on click.
}

关于java - 开始使用 TestFx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27387116/

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