Maven测试在安装阶段失败,但在测试阶段可以



我有一个带有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-clear-install"失败,并出现确切的异常我想这是因为集成测试阶段。我尝试在maven故障保护插件中配置useSystemClassLoader,使用param-Dskip.integration.test=true运行,但没有什么区别,我觉得这个插件根本没有调用。

此外,我还比较了"mvn-clean-test"one_answers"mvn-lean-verify"生成的surefire报告——在这两种情况下,测试套件中的"属性"部分是相同的。

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

Maven 2.2.1操作系统-在Windows和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"one_answers"mvn-clear-test-X",并比较了测试类路径:在第一种情况下

[DEBUG]   PATHMODULEtargetMODULE-1.0.jar

在第二种情况下为

[DEBUG]   PATHMODULEtargetclasses

这就是为什么Ebean找不到类的原因

对于集成测试,maven故障保护插件负责,而不是maven surefire插件。因此,忽略集成测试的配置无法工作。

您在故障保护插件文档中看到这个常见问题条目了吗?它为类加载配置提供了一大堆选项。

如果这些建议都不适用,并且跳过集成测试是可以的(正如您所提到的),那么根据文档,-DskipITs=true应该这样做。

最新更新