2017-12-11 16 views
1

testfxでテストを書く方法を教えるための本当の簡単なJavaFXプロジェクトがあります。私は私のsample.fxmlファイルを複製することを避ける方法を解決できません。プロジェクトの構造は、現在、次のとおりです。JavaFXテストプロジェクトで重複を防ぐにはどうすればいいですか

enter image description here

マイ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); 
    } 
} 

私は私のテストクラスからsample.fxmlにアクセスすることはできません、それだけで簡単でしたそれを複製してtestfxを学ぶことはできますが、それは明らかに進歩的な方法ではありません。また、テストクラス内からstart()を呼び出してシーンを作成しようとしましたが、launch()を複数回呼び出すことができないというエラーが表示されます。

誰かがこれに遭遇し、今後の道を見つけましたか?

答えて

1

.fxmlファイルの複製を避けるには(理想的ではないと思いますが)、src/main/resourcesからファイルをロードすることをお勧めします。コントローラのClassLoader(または非テストコードの他のクラス)を使用して、これを行うことができます。

String filename = "sample.fxml"; 
    ClassLoader loader = Controller.class.getClassLoader(); 
    File file = new File(loader.getResource(filename).getFile()); 
    Parent root = FXMLLoader.load(loader.getResource(filename)); 
+0

すばらしく、ありがとうございます! –

関連する問題