当类位于类路径上时,Surefire会引发SurefireReflectionException

问题描述

我正在尝试运行evosuite生成的单元测试,但是当“ missing”类似乎在类路径中时,maven-surefire-plugin抛出了classnotfound错误

当我尝试运行测试时,调试日志显示在surefire尝试运行测试时,evosuite在类路径上;

[DEBUG] test(compact) classpath:  test-classes  classes  junit-4.12.jar  hamcrest-core-1.3.jar  evosuite-standalone-runtime-1.0.6.jar
[DEBUG] provider(compact) classpath:  surefire-junit4-2.17.jar  surefire-api-2.17.jar

但是失败了

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.17:test (default-test) on project Tutorial_Maven: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.17:test Failed: There was an error in the forked process
[ERROR] java.lang.NoClassDefFoundError: org.evosuite.runtime.thread.KillSwitch

我再次检查了Killswitch类是否在evosuite jar文件中,并且看起来是否存在。

为完整起见,这是mvn -version输出

Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-24T20:49:05+01:00)
Maven home: /home/marijn/git/Tutorial_Maven/EMbedDED
Java version: 1.8.0_252,vendor: Eclipse OpenJ9
Java home: /home/marijn/.sdkman/candidates/java/8.0.252.j9-adpt/jre
Default locale: en_US,platform encoding: UTF-8
OS name: "linux",version: "5.6.11-100.fc30.x86_64",arch: "amd64",family: "unix"

我正在运行的完整命令(遵循指南@ https://www.evosuite.org/documentation/tutorial-part-2/之后)是mvn clean compile test-compile evosuite:generate evosuite:export evosuite:prepare test,具有evosuite参数memoryInMB = 4000和cores = 4。

解决方法

我以前没有使用过EvoSuite,但是使用教程没有问题

THIS

我唯一的理论是,也许您没有从本教程的第一部分中清除$ java -version openjdk version "1.8.0_265" OpenJDK Runtime Environment (build 1.8.0_265-b01) Eclipse OpenJ9 VM (build openj9-0.21.0,JRE 1.8.0 Linux amd64-64-Bit Compressed > References 20200728_727 (JIT enabled,AOT enabled) OpenJ9 - 34cf4c075 OMR - 113e54219 JCL - c82ff0c20f based on jdk8u265-b01) 环境变量?

CLASSPATH

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...