我正在尝试在我的项目中实现TextFX以进行一些UI测试。但是,看来我无法使其正常工作。我已将jar从http://search.maven.org/#search%7Cga%7C1%7Ctestfx下载到系统上名为“ TestFX-3.1.2”的文件夹中。

之后,我在Netbeans8中创建了一个指向这些jar文件(jar,source和javadoc)的新库。作为测试,我创建了一个简单的Java FXML项目,并添加了新库。

public class Test2 extends Application {

@Override
public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

    Scene scene = new Scene(root);

    stage.setScene(scene);
    stage.show();
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
}

}


旁边,我有一个FXML文件的控制器,其中包含以下生成的代码:

public class FXMLDocumentController implements Initializable {

@FXML
private Label label;

@FXML
private void handleButtonAction(ActionEvent event) {
    System.out.println("You clicked me!");
    label.setText("Hello World!");
}

@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
}

}


为了实现TestFX方面,我创建了一个扩展GuiTest的新类:

package test2;

import java.io.IOException;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import org.loadui.testfx.GuiTest;


public class TestTheThing extends GuiTest {

    @Override
    protected Parent getRootNode() {
        FXMLLoader loader = new FXMLLoader();
        Parent node = null;
        try {
            node = loader.load(this.getClass().getResource("FXMLDocument.fxml").openStream());
        } catch (IOException e) {
            System.out.println(e.toString());
        }
        return node;
    }

    @Test //<-- this Annotiation does not work
    public void pressTheButton(){
        //TODO
    }
}


如上面的代码中所述,@ Test根本不起作用,并用红色下划线标记警告“找不到符号”。有人能指出我做错了正确的方向吗?

最佳答案

根据https://repo1.maven.org/maven2/org/loadui/testFx/3.1.2/testFx-3.1.2.pom,testFx具有多个依赖项(guava,junit,hamcrest-all,hamcrest-core)。为了正常工作,您需要将与这些依赖项相对应的jar添加到您的项目中。但是,建议使用maven。

10-04 14:12