【问题标题】:What is the proper location for test classes in a multi module project?多模块项目中测试类的正确位置是什么?
【发布时间】:2017-10-18 15:39:47
【问题描述】:

这是我的总体目标:我想要一个 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,但构建也会生成一个单独的 jar,我可以在 Jasper 中使用它(至少这是我的希望)。

理想情况下,我希望只有一个用于 Spring Boot 的 application.properties 文件。但是,据我所见,如果我将 application.properties 文件放在 Web App 模块中,那么我所有的 Utilities、Sales 等单元测试(至少任何需要数据库连接的测试)都需要在 Web 中应用程序。这似乎也不理想,但如果我将所有测试放在他们自己的模块中,似乎我需要在每个模块中都有一个 application.properties 文件,这也似乎令人困惑。

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

谢谢!

【问题讨论】:

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

标签: java maven spring-boot junit


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 2015-12-10
    相关资源
    最近更新 更多