我刚刚开始处理一个 Java 项目(因为我通常使用 .net),而让我感到奇怪的第一件事是在 Maven 项目中有一个/src 和一个/test 目录,其中显然源代码和测试应该去。
在 .net 中,我更喜欢在单独的程序集/项目中进行测试,因此例如我会:
- 我的项目
- MyProject.Tests
这样我就不必用任何测试来膨胀我部署的代码,并且可以更轻松地真正隔离地测试我的代码,而且在很多情况下,我不需要为每个项目编写测试,我只需要解决方案范围单元/集成/验收测试,即 MySolution.UnitTests、MySolution.IntegrationTests。
但是在 Java 中它似乎只是捆绑在一起,我宁愿将它分开,但是我听说 Maven 是一个残酷的情妇,当你想以不同的方式做事时。
所以要重新统治这篇文章,我的主要问题是:
- 有没有办法将测试从项目中分离出来
- 根据以上信息,在项目中实际进行测试是否有任何优点? (除了当你检查它时,你总是在那里进行测试)
最佳答案
I dont have to bloat my deployed code with any tests
可部署的 Artifact (jar 文件、war 文件)将不包含测试类或数据。
Is there a way to separate out the tests from the project
您可以将其拆分为两个项目,其中一个“测试”项目仅包含测试,并取决于“真实”项目。
但是,尤其是使用 Maven,您可能希望遵循与其他所有人(或至少大多数人)相同的项目布局约定。这将使您的生活更轻松(更少的配置)。
同样,测试不会进入要部署的产品,所以当前的布局应该没有问题。
I would just have solution wide unit/integration/acceptance tests i.e MySolution.UnitTests, MySolution.IntegrationTests.
对于集成测试,这实际上是有道理的。在这种情况下,定义一个“测试”项目,该项目依赖于构成解决方案的所有其他项目(我仍然会将单元测试与他们测试的项目一起保留)。
关于unit-testing - 使用 Maven 项目将测试与 src 分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4517351/