Java 测试类可见性

Java 测试类可见性,java,unit-testing,maven,Java,Unit Testing,Maven,我有一个包含数据模型代码(Hibernate)和一些单元测试的项目a。我还有其他项目B、C和D以及它们的代码和单元测试。我还有一组测试实用程序类,用于所有项目的单元测试。这些测试实用程序类依赖于项目A,因为它们使用数据模型类 如果我将这些测试实用程序类放在项目A中,我会遇到以下问题:项目B、C和D如何在IDE之外查看这些测试实用程序类(我确定这些测试实用程序类放在src/test/java目录中,然后不包括在JAR中) 如果我将这些测试实用程序类放在一个单独的项目中,我会得到一个循环依赖关系,因

我有一个包含数据模型代码(Hibernate)和一些单元测试的项目a。我还有其他项目B、C和D以及它们的代码和单元测试。我还有一组测试实用程序类,用于所有项目的单元测试。这些测试实用程序类依赖于项目A,因为它们使用数据模型类

如果我将这些测试实用程序类放在项目A中,我会遇到以下问题:项目B、C和D如何在IDE之外查看这些测试实用程序类(我确定这些测试实用程序类放在src/test/java目录中,然后不包括在JAR中)

如果我将这些测试实用程序类放在一个单独的项目中,我会得到一个循环依赖关系,因为测试实用程序类依赖于项目a,而a的单元测试使用这些测试实用程序类


感谢您的帮助

这些测试实用程序类应该(通过您的构建过程)打包在一个单独的JAR文件中,其他项目仅在运行测试时使用。

您可以将每个项目捆绑在自己的JAR中-a.JAR、B.JAR、C.JAR、D.JAR,并将这些实用程序类放在自己的JAR-testutilities.JAR中


然后,通过包含testutilities.jar,您可以轻松地将testutilities包含在其他项目中。您还需要将.jar包含为testutilities。jar依赖于A.jar。

问题在于测试实用程序类依赖于项目A,而A的单元测试使用这些实用程序类。因此,如果我将测试实用程序类放在一个单独的项目中,我会得到一个循环依赖关系。请参阅我对Manish Sharma的评论。@Mickeel Marrache:我们不是说你应该将测试实用程序放在一个单独的项目中,我们是说你应该有一个项目a,从中构建两个JAR,一个包含测试实用程序,一个包含生产代码。这一点很好,但Maven似乎不推荐它:看,所以我认为有一个更干净的解决方案。@Mickael Marrache:如果“项目”是指“Maven POM”,那么“干净”的解决方案是有三个项目,一个(A1)带有生产类,一个(A2)对于依赖于A1的测试实用程序,以及一(A3)个依赖于A1和A23的测试,我理解,但将生产类和单元测试放在两个独立的项目上似乎很奇怪,这是我从未见过的场景。通常,单元测试放在生产类所在的同一项目的src/test/java目录中。为什么我会遇到这种“特殊”情况?也许单元测试或测试实用程序类的设计不好?