如何安装TestFX?

时间:2016-11-25 09:47:48

标签: java eclipse javafx testfx

我想在Windows上的Eclipse(Neon)下组合一组jUnit测试来自动化JavaFX GUI的测试。看起来TestFX对于这种事情来说是个傻瓜,但是在网上看了很多,我还是不确定如何在不使用Maven或Gradle的情况下安装TestFX。

我不熟悉Maven和Gradle,并且尝试按照simple instructions通过Maven安装TestFX是不成功的。这是在Eclipse Mars下完成的,之后我的简单GUI程序抛出了一个关于无法查找或加载主类的编译错误以及 Selection不包含的运行时错误主要类型。 (简单的GUI程序之前运行没有错误。)在此之后,我下载了最新的Eclipse Neon并尝试重新开始。

这就是我所做的:

  1. eclipse.org下载并安装Eclipse Neon。
  2. 创建一个名为TestProject的Java项目(执行环境JavaSE-1.8)。
  3. 授予对javafx/**的访问权限(右键单击项目 - 属性 - Java构建路径 - 库 - JRE系统库 - 访问规则 - 添加)。
  4. 使用最少的内容创建MyClass:
  5. package test;
    import javafx.application.Application;
    import javafx.stage.Stage;
    public class MyClass extends Application {
      @Override
      public void start(Stage stage) throws Exception {
          stage.setTitle("Hello World");
          stage.show();
      }
    }
    
    1. 将文件testfx-core-4.0.0-20150226.214553-8.jartestfx repository(从How to use TestFX in your project直接下载部分链接)复制到我的eclipse项目中,位于同一级别作为 JRE系统库;
    2. 将jar文件添加到构建路径(右键单击项目 - 属性 - Java构建路径 - 库 - 添加JARS) - 这会自动创建一个名为 Referenced Libraries 的目录,将jar文件复制到其中;和
    3. 创建一个JUnit测试(右键单击源文件夹 - 新建 - JUnit测试用例),填写相应的 Class in test 字段,以及为测试用例提供名称(MyTest)。
    4. 然后我尝试将MyTest类扩展为使用testfx:

      以下是第二种情况中的代码:

      package test;
      import org.junit.Test;
      import org.testfx.framework.junit.ApplicationTest;
      public class MyTest extends ApplicationTest { }
      

      在每种情况下,eclipse都会抱怨超类GuiTest / ApplicationTest无法解析为某种类型。

      我怀疑问题是我没有正确安装testfx。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

有多个依赖项;必须将以下jar文件添加到Referenced Libraries(将jar文件复制到项目中,右键单击项目 - Properties - Java Build Path - Libraries - Add JARs ...)。

以上内容独立于Gradle和Maven。或者,也可以使用Gradle拉取文件:

  1. 在Eclipse中创建Gradle项目。
  2. 在build.gradle的dependencies块中,插入以下行(source):

    testCompile "org.testfx:testfx-core:4.0.+"
    testCompile "org.testfx:testfx-junit:4.0.+"
    
  3. 右键单击项目 - Gradle - Refresh Gradle Project

  4. 这会将所需文件放入 Project和External Dependencies 文件夹中。

    TestFX 4的有用教程:https://www.youtube.com/watch?v=NG03nNpSmgU