我在eclipse中设置了一个“ Maven项目”(简单项目),并为其添加了一个类和单元测试。测试运行正常。
但是,一旦我将“ module-info.java”添加到“ src / main / java”,单元测试就无法启动:
Error: Could not find or load main class workspace2.unittest.target.test-classes Caused by: java.lang.ClassNotFoundException: workspace2.unittest.target.test-classes
信息:“ workspace2”是我的工作空间的名称,“ unittest”是项目名称。
如果我通过控制台(相同的maven和Java版本)运行maven,则运行良好。
设置:
-月食:2018-12(4.10.0)
-maven:3.6.0(在eclipse中配置)
-Java:oracle-jdk-9.0.4 / openjdk-11.0.2_linux-x64
还有其他人遇到过此类问题吗?
我在JUnit4(4.12和4.13-beta-1)和JUnit5(5.3.2)中进行了尝试。
更新 以下是压缩示例项目的链接:https://www.file-upload.net/download-13475608/unittest.zip.html
pom:
<modelVersion>4.0.0</modelVersion>
<groupId>de.test</groupId>
<artifactId>unittest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
module-info.java:
module de.unittest {
}
课程:
package unittest;
public class Demo {
public int calculate(int a, int b) {
return a + b;
}
}
测试:
package unittest;
import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.Test;
public class DemoTest {
private Demo demo;
@Before
public void setUp() throws Exception {
demo = new Demo();
}
@Test
public void testCalculate() throws Exception {
int calculated = demo.calculate(1, 2);
assertEquals(3, calculated);
}
}
答案 0 :(得分:0)
我找到了根本原因。该错误是由工作空间路径内的空白引起的。 :/创建一个新的工作区(路径内没有空白)后,测试运行正常。