如何从不同的maven项目运行maven项目的测试

时间:2014-02-13 22:00:20

标签: java maven

我有两个maven项目,比如project1和project2。 由于某些功能原因,project2被添加到project1依赖项中。

我在project1中进行了单元测试,当我为project1执行clean install时运行正常。

我的要求是,当我运行project2时,应该执行project1中的测试。 如果无法进行上述操作,则在运行project2时至少为project1执行全新安装。

我无法在project2依赖项中添加project1,因为它会导致循环依赖。 此外,由于其他一些原因,我无法为这两个项目添加共同的父级。

有没有办法做到这一点? 如果有人能帮助我,我真的很感激。

以下是真实情况:

project1有一个数据xml说project1_xml而project2有一个数据xml说project2_xml。

我们需要确保两个xml中的特定数据部分是相同的,如果有人来,只更改一个xml中的数据并构建该项目,那么他们应该会看到错误。

所以我在project1中编写了一些代码来解析xmls和返回map对象。而且project1中的单元测试获取地图对象并进行一些比较并抛出结果。

4 个答案:

答案 0 :(得分:5)

为什么呢?项目2是项目1的依赖项,但项目2没有,应该不知道它的依赖项是什么!

让我们这样看待它。你有一个项目(项目1)。作为项目的依赖项,您可以添加Hibernate(项目2)。现在,当有人在Hibernate中运行测试时,您是否希望它在您的个人项目中运行测试?

稍后有人创建Project 3,然后将Project 2添加为依赖项。 Project 2现在也应该运行Project 3的测试吗?

没有意义,对吗? :)您必须适当地建模您的依赖项。

此外,如果您考虑一下,您甚至不必运行依赖项的测试。当您引入依赖项时,您将引入一个自包含的工件。你希望的那个,在被推出之前已经过测试。这些依赖项的测试将在 持续集成期间运行,而不是在您的期间运行。您能想象在项目中运行所有依赖项的所有单元测试吗?这需要很长时间,对吧?所以我建议你重新考虑你的依赖关系。

如果你真的认为Project 1的测试应该在Project 2中运行,并且根本无法解决它,那么也要看一下代码。也许这意味着这两个项目都应该在一个项目中的不同模块下。

答案 1 :(得分:0)

嗯,这听起来很复杂,第一个问题:如果这些测试是真正的单元测试,为什么不能将这些测试添加到project2?您应该只测试自己代码的单位,而不是另一个项目的代码。

您熟悉多模块maven项目吗?这真的有助于组织。

答案 2 :(得分:0)

你为什么要那样做?如果要确保Project1在Project2之前编译,则必须让Project2依赖于project1,而不是其他方式。

答案 3 :(得分:0)

如果您有类似的循环依赖关系,则必须询问它们是否真的是两个单独的项目或一个项目。很多时候,有人画了一条任意线并将这两个项目分开。如果它们是一个项目,那么所有测试都将一直运行。

相关问题