gpt4 book ai didi

java - Maven Junit 测试 "noClassDefFoundError"

转载 作者:搜寻专家 更新时间:2023-11-01 03:41:12 24 4
gpt4 key购买 nike

我将 Maven 与 Junit 测试结合使用。我正在使用标准的 Maven 项目结构,我可以在 Eclipse 中运行“作为 Junit 测试运行”,它们都成功了,但是如果我想运行 Maven 测试/安装,那么测试不会运行,导致错误“无法初始化类 main.sushi.persistence.Persistor”。

这是我们的项目树:

├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── main
│   │   │   └── sushi
│   │   │   └── persistence
│   │   │   ├── DatabaseEnvironments.java
│   │   │   ├── META-INF
│   │   │   │   ├── persistence.xml
│   │   │   │   └── persistence_template.xml
│   │   │   └── Persistor.java
│   │   └── resources
│   └── test
│   ├── java
│   │   ├── META-INF
│   │   │   ├── persistence.xml
│   │   │   └── persistence_template.xml
│   │   └── test
│   │   └── sushi
│   │   └── persistence
│   │   ├── ProcessPersistorTest.java
│   │   └── TestPersistor.java
│   └── resources
└── target
├── classes
│   ├── META-INF
│   │   ├── MANIFEST.MF
│   │   └── maven
│   │   └── sushi
│   │   └── SushiPersistence
│   │   ├── pom.properties
│   │   └── pom.xml
│   └── main
│   └── sushi
│   └── persistence
│   ├── DatabaseEnvironments.class
│   ├── META-INF
│   │   ├── persistence.xml
│   │   └── persistence_template.xml
│   └── Persistor.class
├── generated-sources
│   └── annotations
├── surefire
├── surefire-reports
│   ├── TEST-test.sushi.persistence.ProcessPersistorTest.xml
│   ├── TEST-test.sushi.persistence.TestPersistor.xml
│   ├── test.sushi.persistence.ProcessPersistorTest.txt
│   └── test.sushi.persistence.TestPersistor.txt
└── test-classes
├── META-INF
│   ├── persistence.xml
│   └── persistence_template.xml
└── test
└── sushi
└── persistence
├── ProcessPersistorTest.class
└── TestPersistor.class

任务:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>sushi</groupId>
<artifactId>SushiPersistence</artifactId>
<version>SNAPSHOT</version>
<repositories>
<repository>
<id>EclipseLink</id>
<url>http://download.eclipse.org/rt/eclipselink/maven.repo</url>
</repository>
</repositories>
<build>

<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>de.hpi-web.sushicommon</groupId>
<artifactId>SushiCommon</artifactId>
<version>SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.3.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.22</version>
</dependency>
</dependencies>


</project>

最佳答案

老问题,但我会提供我的答案,因为前几天我遇到了一个非常相似的问题。我正在为包 project.model 中的类 Foo 编写一个单元测试,它在包 project.cache 中有一个 Bar 类型的成员。当 Maven 运行单元测试时,我在创建 Bar 类型的模拟时遇到了上述错误。

运行 mvn verify -X 时,我注意到在运行测试时类路径中缺少目标/类。

我通过将以下内容添加到 pom.xml 来解决它。

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>${project.basedir}/target/classes</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</plugin>

</plugins>
</build>

关于java - Maven Junit 测试 "noClassDefFoundError",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13970559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com