gpt4 book ai didi

testing - Maven 测试在安装阶段失败但在测试阶段没问题

转载 作者:行者123 更新时间:2023-11-28 20:01:25 25 4
gpt4 key购买 nike

我有一个使用 Spring 和 Ebean 的空 java 测试

protected static ApplicationContext ctx;
@BeforeClass
public static void initSpringContext() {
ctx = new ClassPathXmlApplicationContext("spring-context.xml");
}

public class SomeTest extends SpringBase {

@Test
public void emptyTest() {}
}

我在加载类时遇到了问题:

Caused by: javax.persistence.PersistenceException: models.Flat is NOT an Entity Bean registered with this server?

问题已通过 pom 配置修复

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration>
</plugin>

此修复后“mvn clean test”运行正常,但“mvn clean install”失败并出现完全异常我想这是因为集成测试阶段。我尝试在 maven-failsafe-plugin 中配置 useSystemClassLoader,使用参数 -Dskip.integration.test=true 运行但没有任何区别,我觉得这个插件根本没有调用。

我还比较了由“mvn clean test”和“mvn clean verify”生成的 surefire-reports——测试套件中的“属性”部分在这两种情况下是相同的。

跳过集成测试也是一个可接受的解决方案。

Maven 2.2.1 OS - Tested under Windows and Debian

如果有帮助,错误堆栈跟踪:

Caused by: javax.persistence.PersistenceException: models.Flat is NOT an Entity Bean registered with this server?
at com.avaje.ebeaninternal.server.core.DefaultServer.createQuery(DefaultServer.java:1008)
at com.avaje.ebeaninternal.server.core.DefaultServer.createQuery(DefaultServer.java:965)
at com.avaje.ebeaninternal.server.core.DefaultServer.find(DefaultServer.java:1001)
at com.avaje.ebean.Ebean.find(Ebean.java:1143)
at flats.crawler.managers.CrawlerManager.initCrawlerHashes(CrawlerManager.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:346)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:299)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:132)
... 48 more

我运行了两个命令“mvn clean install -X”和“mvn clean test -X”并比较了测试类路径:在第一种情况下

[DEBUG]   PATH\MODULE\target\MODULE-1.0.jar

第二种情况

[DEBUG]   PATH\MODULE\target\classes

这就是Ebean找不到类的原因

最佳答案

对于集成测试 maven-failsafe-plugin负责而不是 maven-surefire 插件。所以你忽略集成测试的配置是行不通的。

关于testing - Maven 测试在安装阶段失败但在测试阶段没问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12671101/

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