如何防止我的 JavaFX 测试项目中出现重复
How can I prevent duplication in my JavaFX test project
我有一个真正简单的 JavaFX 项目来自学如何使用 testfx 编写测试。我不知道如何防止自己不得不复制我的 sample.fxml 文件。目前项目结构为:
我的 Main.java 看起来像这样:
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
static Stage stage;
@Override
public void start(Stage stage) throws Exception {
Main.stage = stage;
Parent root = FXMLLoader.load(getClass().getResource("../../resources/sample.fxml"));
Scene scene = new Scene(root, 300, 275);
stage.setTitle("FXML Welcome");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
我无法从我的测试 class 访问 sample.fxml,并且通过复制它更容易学习 testfx - 但这显然不是前进的方向。我还尝试通过在我的测试 class 中调用 start() 来创建场景,但我收到一条错误消息,指出 launch() 不能被调用多次。
有没有其他人遇到过这个问题并找到了前进的方向?
为避免复制您的 .fxml 文件(我同意这并不理想),我建议您只从 src/main/resources 加载文件。您可以通过使用控制器的 ClassLoader(或任何其他 class 非测试代码)来做到这一点。
String filename = "sample.fxml";
ClassLoader loader = Controller.class.getClassLoader();
File file = new File(loader.getResource(filename).getFile());
Parent root = FXMLLoader.load(loader.getResource(filename));
我有一个真正简单的 JavaFX 项目来自学如何使用 testfx 编写测试。我不知道如何防止自己不得不复制我的 sample.fxml 文件。目前项目结构为:
我的 Main.java 看起来像这样:
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
static Stage stage;
@Override
public void start(Stage stage) throws Exception {
Main.stage = stage;
Parent root = FXMLLoader.load(getClass().getResource("../../resources/sample.fxml"));
Scene scene = new Scene(root, 300, 275);
stage.setTitle("FXML Welcome");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
我无法从我的测试 class 访问 sample.fxml,并且通过复制它更容易学习 testfx - 但这显然不是前进的方向。我还尝试通过在我的测试 class 中调用 start() 来创建场景,但我收到一条错误消息,指出 launch() 不能被调用多次。
有没有其他人遇到过这个问题并找到了前进的方向?
为避免复制您的 .fxml 文件(我同意这并不理想),我建议您只从 src/main/resources 加载文件。您可以通过使用控制器的 ClassLoader(或任何其他 class 非测试代码)来做到这一点。
String filename = "sample.fxml";
ClassLoader loader = Controller.class.getClassLoader();
File file = new File(loader.getResource(filename).getFile());
Parent root = FXMLLoader.load(loader.getResource(filename));