当前位置: 首页 > 知识库问答 >
问题:

如果作为测试套件的一部分运行,JUnit测试将失败

蒲功
2023-03-14

我有一个测试类,有几个测试,都通过了。如果我将该类添加到测试套件中,则所有测试都会失败。

原因是无法解决对JavaFX类型的依赖关系。我使用了一个初始化JavaFX框架(例如应用程序线程等)的测试规则,这似乎可以正常工作,正如通过的测试所表明的那样。由于异常,测试失败:

java.lang.NoClassDefFoundError: Could not initialize class javafx.scene.control.Label

为什么JUnit的行为会因我运行测试的方式而异?我怎样才能解决这个问题?请注意,这并不是针对so的GUI测试(我不想模拟用户操作或类似的操作,它更多的是关于如何通过代码在内部创建和管理某些控件)。

测试套件:

@RunWith(Suite.class)
@SuiteClasses({ 
    TestClass.class
})

public class TestSuite {

}

共有1个答案

夏景胜
2023-03-14

您可能正在Java 7下运行测试套件(需要手动将JavaFX运行时添加到类路径)。

我建议在Oracle Java 8的最低Java版本上进行所有JavaFX开发(其中所有JavaFX工具包将自动位于默认类路径上)。

有关更多信息,请参阅答案:使用JavaFX 2.0编译代码

系统getProperty(“java.version”)返回1.8.0\u 25,即版本不应该是问题。

也可能是您使用的是OpenJDK构建而不是Oracle JDK构建(因为大多数OpenJDK实现目前不包括JavaFX)。

一个可能的问题是,您的测试套件正在使用与默认类加载器不同的类加载器运行,并且测试套件正在使用的类加载器不包括JavaFX运行时类(在Java 8中,这些类位于<代码>

如果您愿意,您可以编辑您的问题以包含MCVE,以便有人可以复制您的问题。

 类似资料:
  • 我试图将Jenkins配置为包括运行JUnit测试的构建后步骤,但遇到了一个错误: 詹金斯步骤本身就显示了一个问题: 这并不奇怪,因为我在targets下没有surefire-reports子文件夹,而且我不知道要生成xml报表必须做什么。我对Java、Maven、Eclipse、Linux-一切都是新手--而且是独自工作。 我看到了关于设置这个后期构建步骤的内部说明,但现在我需要知道如何使其工作

  • 我正在尝试使用Zerocode使用Junit(4)运行负载测试。通过遵循这些教程,我能够运行现有的Junit测试类 使用零代码框架使用JUnit进行负载测试 我有一个Junit测试套件可以正常工作,我想知道如何使用zerocode来启动这个测试套件,以便它可以运行负载测试所有测试类中的所有测试。上面的例子描述了如何运行选定的测试方法,或者只运行少数测试方法。

  • 我已经编写了一个JUnit测试套件,用于运行多个测试用例。 现在我想一次运行我的测试套件类(AllTest.java),以便所有测试都由一个类触发、执行和管理。我知道maven故障保护插件是可用的,但是有没有其他更简单的方法从maven调用JUnit测试套件呢? 我不想使用另一个插件。 这是我当前的maven-故障安全-插件配置:

  • 问题内容: 如何从命令行运行Junit 4.8.1测试套件?另外,我想使用JUnit 4.8引入的类别,有没有一种方法可以从命令行指定要运行的类别。 问题答案: 从4.8开始,无法从命令行指定类别。

  • 我有一个案例,我的mockito测试都单独通过,但当作为测试包的一部分运行时可能会失败。我使用mockito版本2.9.0 我的测试课程如下 generalConfig/GeneralConfigLocks上下文的内容。xml如下所示 我从运行测试中得到的错误响应示例如下 有谁能解释一下为什么我的测试是单独通过的,但作为一个整体却失败了

  • 从很久以前的某个版本开始(大约是1.b.35版),Nutz 就偷偷的加入了 maven 的 pom.xml 文件, 极好的解决了测试时需要依赖其他 jar 包的问题,接下来就让我们使用 Maven 来进行 JUnit 测试吧。 Nutz 在 Github 的 地址为 https://github.com/nutzam/nutz(Git@OSC镜像 https://git.oschina.net/n