使用Maven Project将测试与src分开?

时间:2010-12-23 09:20:40

标签: unit-testing maven-2 maven

我刚刚开始研究一个Java项目(因为我通常使用.net),并且首先让我觉得奇怪的是,在Maven项目中有一个/ src和一个/ test目录显然源代码和测试应该去。

在.net中我更喜欢在单独的程序集/项目中进行测试,例如我会:

  • MyProject的
  • MyProject.Tests

这样我就不必在任何测试中膨胀我部署的代码,这样可以更容易地在真正的隔离中测试我的代码,并且在很多情况下我没有费心去编写每个项目的测试,我只需要解决方案单元/集成/验收测试,即MySolution.UnitTests,MySolution.IntegrationTests。

然而在Java中它似乎只是捆绑在一起,我宁愿把它分开,但是当我想对默认结构采取不同的做法时,我听说Maven是一个残酷的情妇。

为了重新回到这篇文章中,我的主要问题是:

  • 有没有办法将测试从项目中分离出来
  • 根据以上信息,是否有任何专业人员在项目中实际进行测试? (除非你检查出来,你总是在那里进行测试)

2 个答案:

答案 0 :(得分:6)

  

我不必使用任何测试来扩展我部署的代码

可部署工件(jar文件,war文件)不包含测试类或数据。

  

有没有办法将测试从项目中分离出来

您可以将其拆分为两个项目,其中“测试”项目仅包含测试,并取决于“真实”项目。

但是,特别是对于Maven,您可能希望遵循与其他人(或至少大多数人)相同的项目布局约定。这将使您的生活更轻松(配置更少)。

同样,测试不会使其成为要部署的产品,因此当前的布局应该不是问题。

  

我只有解决方案广泛的单元/集成/验收测试,即MySolution.UnitTests,MySolution.IntegrationTests。

对于集成测试,这实际上是有道理的。在这种情况下,定义一个“测试”项目,该项目依赖于构成解决方案的所有其他项目(我仍然将单元测试与他们测试的项目保持一致)。

答案 1 :(得分:2)

在默认的maven设置中,测试仅执行,但未部署。

按照惯例,src / main中的所有内容都在目标存档中,而其他所有内容都没有。

默认情况下,maven JAR项目创建一个jar,其中只包含从src / main / java编译的类。您可以使用不同的插件目标来创建:

但所有这些都需要额外的步骤。