Unit testing 在运行测试用例时,如何从src/main/resources中排除persistence.xml?[Maven:多模块]
我有一个基于Maven的多模块项目。该项目是一个Unit testing 在运行测试用例时,如何从src/main/resources中排除persistence.xml?[Maven:多模块],unit-testing,maven,maven-3,Unit Testing,Maven,Maven 3,我有一个基于Maven的多模块项目。该项目是一个EAR文件,包含子部署,包括first ejb.jar和first web.war。第一个ejb.jar包含两个persistence.xml一个itssrc/main/resources/META-INF/persistence.xml,第二个在src/test/resources/META-INF/persistence.xml中。first ejb.jar的测试用例在它从测试目录中选择persistence.xml时成功执行(我手动从main
EAR
文件,包含子部署,包括first ejb.jar
和first web.war
。第一个ejb.jar
包含两个persistence.xml
一个itssrc/main/resources/META-INF/persistence.xml
,第二个在src/test/resources/META-INF/persistence.xml
中。first ejb.jar
的测试用例在它从测试目录中选择persistence.xml
时成功执行(我手动从main
中排除persistence.xml
)。但是当我为first web.war
运行测试用例时,它包括persistence.xml
来自first ejb.jar
的主目录,这使我的测试用例失败
所以,我的问题是如何在多模块项目中的Maven中说,在运行第一个web.war
模块的测试用例时,从第一个ejb.jar
的测试目录中包含persistence.xml
编辑:
因此,我浏览了运行first web.war
测试时使用的类路径。我看到它包含first ejb.jar
作为其依赖项(这对于生产构建是正确的)。这实际上是在破坏对first web.war
模块的测试,因为它最终使用persistence.xml
来自src\main\resources
的first ejb.jar
模块
因此,我相信我需要做的是声明另一个工件,它包含
first ejb.jar
所包含的所有内容,但在其src\main\resources
目录中包含不同的persistence.xml
。我可以把它命名为first ejb test.jar
。然后,我可以将此工件作为first web.war
项目的依赖项,通过maven
配置文件运行测试。我没有权威性的答案,所以我将坚持评论。但我认为你做不到。我在应用程序上下文文件方面也遇到过类似的问题,并且在测试期间使用它们时总是以不同的方式调用它们(例如,beans.xml
与testbeans.xml
)。不确定相同的方法是否适用于persistence.xml
。如何运行真正属于集成测试的测试。你能显示pom文件吗?@khmarbaise不幸的是,我不能显示我的pom文件,但我用我发现的一些发现编辑了我的问题。我相信我最初的要求可能不可能实现。解决方法或可能是正确的方法是使用另一个包含测试特定内容的工件,并使其成为需要使用它的任何人的依赖项。如果你有任何建议,请告诉我。干杯,谢谢大家抽出时间。