如何配置基于Maven的Java模块项目以在Eclipse中运行单元测试?

时间:2019-01-19 13:39:02

标签: java eclipse maven junit module

我在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);
  }

}

1 个答案:

答案 0 :(得分:0)

我找到了根本原因。该错误是由工作空间路径内的空白引起的。 :/创建一个新的工作区(路径内没有空白)后,测试运行正常。