Java 为模块创建maven junit测试库

Java 为模块创建maven junit测试库,java,maven,junit,Java,Maven,Junit,考虑定义抽象类的maven实用程序模块(模块1): AbstractFoo.java。在测试资源下,编写了所述类的模型:FooMockup.java。还编写了一个测试类:AbstractFooTest.java 现在考虑第二个模块(模块2),它包含一个使用ActudioFoO的类,并且还声明了测试用例:BAR.Java和BARTest.java。java在创建Bar实例的同时创建FooMockup实例 依赖关系很简单 模块1 src:不依赖任何东西 模块1测试:取决于模块1 src 模块2 sr

考虑定义抽象类的maven实用程序模块(模块1): AbstractFoo.java。在测试资源下,编写了所述类的模型:FooMockup.java。还编写了一个测试类:AbstractFooTest.java

现在考虑第二个模块(模块2),它包含一个使用ActudioFoO的类,并且还声明了测试用例:BAR.Java和BARTest.java。java在创建Bar实例的同时创建FooMockup实例

依赖关系很简单

模块1 src:不依赖任何东西

模块1测试:取决于模块1 src

模块2 src:取决于模块1 src

模块2测试:取决于模块1和2 src以及模块1测试

这里没有循环依赖关系。使用maven时会出现问题。Maven提供了两种导入测试依赖项的方法:

如果我使用“简单的方法”,那么maven拒绝管理可传递的依赖项,这既不简单也不可取。为了使用“首选方式”,我必须将模块1的测试转移到它自己的模块中。因为模型依赖于模块1 src,模块1测试依赖于模型,所以我必须将模型保存在与模型相同的包中。maven标准是在src/test下进行测试,而不是在单独的模块中。因此,maven标准中的这一漏洞不能很好地与某些IDE集成,需要在其他IDE中进行配置

除了为测试范围的JAR创建一个自定义maven插件来解析可传递的测试依赖项之外,是否有一种方法可以将AbstractFooTest与AbstractFoo保持在同一个模块中,并让maven解析FooMockup的可传递依赖项?

不可能。参考更具体地说

这里的问题是,设计测试依赖项是不可传递的

我们面临类似的问题,并创建了测试基础设施项目,该项目将类保存在src/main中。从长远来看,这证明是有用的,因为它可以更好地隔离项目


如果您想坚持当前的方式,那么您只需复制依赖项或将其保留在父pom中。

就个人而言,我不会在其他项目中使用您的测试对象。或者,使用类似Mockito的工具快速创建模拟对象。@TedTrippin谢谢。我知道那个图书馆。我举了一个简单明了的例子。在现实生活中,我实际上并没有使用模型,而是使用实用程序类。如果这个简单的问题可以解决,我可以将解决方案扩展到我的实际问题。我更喜欢别人教我钓鱼,而不是教我钓鱼这些测试是单元测试吗?@khmarbaise我们使用标准junit来构建单元测试和集成测试(maven surefire插件/maven failsafe插件)。单元测试位于同一个模块中。集成测试可以在一个单独的模块中…如果您想创建测试包,只需在一个普通模块中将基类等放入
src/main/java
中,并使用唯一的范围内测试…最简单的解决方案..谢谢。这就是我害怕的。