目前我有一个单独的模块,它同时具有集成测试和单元测试。我正在尝试将其拆分为2个项目,因此单元测试仍保留在主代码库中,并且还有一个单独的模块用于集成测试。
因此,我创建了一个新的子模块(模块B),它取决于第一个子模块(模块A),因此集成测试可以访问src代码。
我遇到的问题是单元测试和集成测试都使用了一些util断言类(例如自定义的hamcrest断言)。这些util断言不应该存在于模块A的src代码中,但我不相信它们应该在模块A的测试目录中。
因此,它指向所有这些自定义断言的另一个项目。这是非常混乱的......有没有人知道这种方式呢?
我的想法是让模块B拥有包含所有自定义断言类的src目录,这些类可以作为依赖项导入模块A(但这会导致循环依赖性错误)。
答案 0 :(得分:0)
对于变得混乱的事情你是对的。这是可维护性的敌人。
我所做的是在模块A中的src/test/java
中维护自定义hamcrest断言和匹配器,然后添加maven-jar-plugin的辅助执行以创建test-jar
工件:
<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>
然后将此jar作为依赖项添加到模块B中:
<dependency>
<groupId>au.com.mycompany.myapp</groupId>
<artifactId>A</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
以这种方式最小化复杂性并提高可维护性。