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

时间:2017-10-18 15:39:47

标签: java maven spring-boot junit

这是我的总体目标:我想要一个Spring Boot REST API。最终,这将有一个Angular前端。 REST API将具有许多JPA实体。我需要能够在Jasper Reports Server和REST API中使用这些实体。为此,我认为最好的方法是多模块Maven项目。我的设置将如下所示:

- Project
--Web App
--Utilities
--HumanResources
--Sales
--etc.

其中Web App,Utilities,HumanResources,Sales等是模块。我可以在Web应用程序中使用Utilities,但构建也会生成一个我可以在Jasper中使用的独立jar(至少这是我的希望)。

理想情况下,我想只有一个用于Spring Boot的application.properties文件。但是,据我所知,如果我将application.properties文件放在Web App模块中,那么对于Utilities,Sales等的所有单元测试(至少需要数据库连接的任何东西)都需要在Web中应用。这似乎也不理想,但如果我把所有测试都放在他们自己的模块中,似乎我需要在每个模块中使用application.properties文件,这看起来也很混乱。

我的方法有效,还是有更好的方法?我怎样才能对每个模块进行测试,但仍然可以轻松地将所有内容捆绑在一起?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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