我有一个测试类,它有几个测试并且全部通过。 如果我将类添加到测试套件中,则所有测试都会失败。
原因是无法解析对JavaFX类型的依赖性。我使用初始化JavaFX框架的test rule(例如应用程序线程等),这似乎正常,因为传递的测试表明。 测试由于例外而失败:
java.lang.NoClassDefFoundError: Could not initialize class javafx.scene.control.Label
为什么JUnit的行为会有所不同,具体取决于我如何运行测试?我怎样才能解决这个问题? 请注意,这并不是特别的GUI测试(我不想模拟用户操作或类似的东西,更多的是关于如何通过我的代码在内部创建和管理某些控件)。
测试套件:
@RunWith(Suite.class)
@SuiteClasses({
TestClass.class
})
public class TestSuite {
}
答案 0 :(得分:0)
您可能正在Java 7下运行测试套件(您需要手动将JavaFX运行时添加到类路径中)。
我建议在Oracle Java 8的最小Java版本上进行所有JavaFX开发(其中所有JavaFX工具包将自动位于默认类路径上)。
有关详情,请参阅答案:Compile code using JavaFX 2.0
System.getProperty(" java.version")返回1.8.0_25,即版本应该不是问题。
也可能是您正在使用OpenJDK构建而不是Oracle JDK构建(因为大多数OpenJDK实现目前不包括JavaFX)。
一个可能的问题是,您的测试套件使用的是与默认类加载器不同的类加载器,并且测试套件使用的类加载器不包含JavaFX运行时类(在Java 8中位于{{ 1}})。
如果您愿意,可以编辑您的问题以包含MCVE,以便有人可以复制您的问题。