如何防止JavaFX测试项目中的重复
我有一个非常简单的JavaFX项目来教自己如何使用testfx编写测试。我不知道如何防止自己不得不复制sample.fxml文件。该项目的结构目前为: My Main.java如下所示:如何防止JavaFX测试项目中的重复,javafx,testfx,Javafx,Testfx,我有一个非常简单的JavaFX项目来教自己如何使用testfx编写测试。我不知道如何防止自己不得不复制sample.fxml文件。该项目的结构目前为: My Main.java如下所示: package sample; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx
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);
}
}
我无法从我的测试类中访问sample.fxml,使用它复制testfx会更容易,但这显然不是前进的方向。我也尝试过通过在测试类中调用start()来创建场景,但是我得到一个错误,即不能多次调用launch()
是否有其他人遇到过这种情况并找到了前进的方向?为了避免复制.fxml文件(我同意这并不理想),我建议您从src/main/resources加载该文件。您可以通过使用控制器的类加载器(或非测试代码中的任何其他类)来实现这一点
String filename = "sample.fxml";
ClassLoader loader = Controller.class.getClassLoader();
File file = new File(loader.getResource(filename).getFile());
Parent root = FXMLLoader.load(loader.getResource(filename));