当前我有一个单个模块,该模块既具有集成测试和单元测试。我正在尝试将其分为两个项目,因此单位测试保留在主代码库中,并为集成测试提供了单独的模块。
因此,我创建了一个新的子模块(模块B),该模块取决于第一个子模块(模块A),因此集成测试可以访问SRC代码。
我遇到的问题是单位测试和集成测试都使用了一些UTIL断言类(例如自定义Hamcrest断言)。这些UTIT断言不应生活在模块A的SRC代码中,但我不认为它们也应该在模块中AT test目录。
因此,它指向了所有这些自定义主张的另一个项目。那是非常混乱的...有人知道这条路吗?
我的想法是让模块b具有包含所有自定义断言类的SRC目录,该类别可以作为模块A导入的所有自定义断言类(但这会导致环状依赖性错误)。
你对事情变得凌乱。这是可维护性的敌人。
我要做的是在模块A中的src/test/java
中维护自定义的Hamcrest主张和匹配器,然后添加Maven-Jar-Plugin的次级执行,以创建test-jar
Artifact:
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
<configuration>
<includes>
<include>au/com/mycompany/serialization/**.class</include>
<include>**/AddressMatcher.class</include>
<include>**/AddressAssertion.class</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
然后将此罐子添加为模块B中的依赖关系:
<dependency>
<groupId>au.com.mycompany.myapp</groupId>
<artifactId>A</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
您以这种方式最小化复杂性并提高可维护性。