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

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

呼延衡
2023-03-14

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

但是,当我在“src/main/java”中添加“module info.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(相同的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

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 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个答案

谭光辉
2023-03-14

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

 类似资料:
  • 我想我在插件中缺少了一些东西,可以让maven在maven lifecycle命令期间运行Spock test和TestNG。我想我错过了一些琐碎的事情。可以有人在这里给我一些关于我应该在pom中添加什么的指针,或者如果有人在github中有一个示例骨架项目,我可以看看。谢了。

  • 问题内容: 我一直在尝试使用Maven Shade插件来获取jar,但是我仍然没有成功。 这是我的项目结构: Module1(pom.xml): Module2(pom.xml): MainModule(pom.xml): 根据这段代码,我得到了2个jar文件(Module1-version.jar和Module2-version.jar)。但这不是我想要的。我希望得到1个jar文件(MainMo

  • 问题内容: 这是一个基本问题,我只是不太熟悉Maven多模块结构。说,我有一个Web应用程序。我想将一些模块连接到它(某些服务)。我是否需要仅将其中一个模块(依赖于其他模块)制作为一个Web应用程序,然后运行它?一开始我以为我可以运行整个项目,但是这个选项在我的IDE中是无效的(我现在正在使用NetBeans),这使我认为我应该运行一个类似于主模块的东西(在这种情况下为Web应用程序) )。是这样

  • 问题内容: 我变得有点疯狂,因为我找不到在将使用Maven构建的Java War项目中设置angular 4应用程序的指南。这是因为我想将其运行到wildfly服务器中。 有什么帮助吗? 谢谢 问题答案: 我有一个类似的要求,即要有一个源项目,其中要有Java Web服务项目以及angular项目(基于angular- cli的项目),并且maven构建应该在其中包含所有角度文件的情况下进行战争。

  • 我希望通过在所有模块构建和单元测试完成后从所有模块运行集成测试来加快对“简单”构建失败(编译错误和单元测试失败)的反馈。 你能提出一个实现这一点的好方法吗?

  • 我一直在尝试使用Maven Shade插件获取jar,但仍然没有成功。 这是我的项目结构: 模块1(pom.xml): 模块2(pom.xml): 主模块(pom.xml): 根据这段代码,我得到了2个jar文件(Module1-version.jar和Module2-version.jar)。但这不是我想要的。我希望得到1个jar文件(MainModule-version.jar),它将包含另一