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

我在eclipse中设置了一个“Maven Project”(简单项目)并为它添加了一个类和单元测试。测试运行良好。


但是,只要我将“module-info.java”添加到“src/main/java”,单元测试就无法启动:


错误:无法找到或加载主类workspace2.unittest.target.test-classes

引起:java.lang.ClassNotFoundException:workspace2.unittest.target.test-classes

信息:“workspace2”是我的工作空间的名称,“unittest”是项目名称。


如果我通过控制台运行 maven(相同的 maven 和 java 版本),它运行良好。


设置

:-eclipse: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


起居室:


<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>

模块信息.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);

  }

}


catspeake
浏览 221回答 1
1回答

慕桂英546537

我找到了根本原因。该错误是由工作空间路径内的空白引起的。:/创建新工作区(路径内没有空格)后,测试运行良好。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java