Java 多模块项目中测试类的正确位置是什么?

Java 多模块项目中测试类的正确位置是什么?,java,maven,spring-boot,junit,Java,Maven,Spring Boot,Junit,这是我的总体目标:我想要一个SpringBootRESTAPI。最终,这将有一个角度前端。RESTAPI将有许多JPA实体。我需要能够在Jasper报表服务器以及RESTAPI中使用这些实体。为此,我认为最好的方法是多模块Maven项目。然后,我的设置将如下所示: - Project --Web App --Utilities --HumanResources --Sales --etc. 其中Web应用程序、实用程序、人力资源、销售等是模块。我可以在Web应用程序中使用实用程序,但构建也会产

这是我的总体目标:我想要一个SpringBootRESTAPI。最终,这将有一个角度前端。RESTAPI将有许多JPA实体。我需要能够在Jasper报表服务器以及RESTAPI中使用这些实体。为此,我认为最好的方法是多模块Maven项目。然后,我的设置将如下所示:

- Project
--Web App
--Utilities
--HumanResources
--Sales
--etc.
其中Web应用程序、实用程序、人力资源、销售等是模块。我可以在Web应用程序中使用实用程序,但构建也会产生一个单独的jar,我可以在Jasper中使用,至少这是我的希望

理想情况下,我希望只有一个application.properties文件用于Spring引导。然而,据我所见,如果我将application.properties文件放在Web应用程序模块中,那么我所有的单元测试(至少是任何需要数据库连接的实用程序、销售等)都需要放在Web应用程序中。这似乎也不太理想,但如果我将所有测试放在它们自己的模块中,似乎每个模块中都需要一个application.properties文件,这看起来也很混乱

我的方法有效吗,还是有更好的方法?如何在每个模块上进行测试,但仍能以一种简单的方式将所有内容联系在一起


谢谢

首先,每个模块都应该有自己的测试类,以便将测试类保持在它们所测试代码的同一模块中。将测试类放在另一个模块中是一个非常糟糕的主意。事实上,如果您修改了某个模块中破坏测试的内容,但忘记了测试类放置在哪个模块中,会发生什么情况?除非编译其他模块,否则在编译时不会有任何通知


第二,如果需要公共配置/文件/类,可以将它们放在一个公共模块中,该模块将保存需要在模块之间共享的所有内容,而无需复制它们。因此,每个模块都将公共模块声明为依赖项。

每个模块都应该有自己的测试类。@aranoid那么我应该在每个模块中复制application.properties文件吗,或者有办法解决这个问题吗?您可以将所有配置/公共部分放在一个公共模块中,该模块将容纳需要在模块之间共享的所有内容,而无需复制它们