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

标签 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 应用程序、实用程序、人力资源、销售等是模块。我可以在 Web 应用程序中使用实用程序,但构建还将生成一个单独的 jar,我可以在 Jasper 中使用它(至少这是我的希望)。

理想情况下,我只想为 Spring Boot 创建一个 application.properties 文件。但是,据我所知,如果我将 application.properties 文件放在 Web 应用程序模块中,那么我对实用程序、销售等的所有单元测试(至少是任何需要数据库连接的测试)都需要在 Web 中应用程序。这看起来也不理想,但如果我将所有测试放在自己的模块中,似乎每个模块中都需要一个 application.properties 文件,这也看起来令人困惑。

我的方法有效吗,或者有更好的方法吗?如何在每个模块上进行测试,同时仍然以简单的方式将所有内容捆绑在一起?

谢谢!

最佳答案

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

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

关于java - 多模块项目中测试类的正确位置是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46814106/

相关文章:

java - 调用从字符串方法创建并实现实际方法参数

java - Jboss EAP 7.0.0 - java.lang.ClassNotFoundException : org. jboss.naming.remote.client.InitialContextFactory

java - 如何在 Spring Boot 应用程序中禁用请求 header 上的主机信息验证

java - Makefile 同时编译 C 和 Java 程序

java - 为什么我在这个 for 循环中遇到 NullPointerException?

java - 在 Java 中使用正则表达式更改字符串

java - 我仍然可以将 eclipse 用于 android 项目吗?

java - 使用reuseForks配置maven-surefire插件

json - Spring 启动 : Convert complex json string response to object

java - 从 Spring JAR 读取文件