【发布时间】:2012-01-17 00:04:49
【问题描述】:
当使用 Ivy 进行单元测试时,将测试依赖项放入您正在构建的目标二进制文件的 Ivy.xml 文件中是最佳实践吗?还是应该将它们放在您正在构建的测试项目的单独 Ivy.xml 文件中?
我在我的 Jenkins 构建服务器上使用 Ant 构建文件。
最初我计划在构建目标二进制文件后运行单元测试项目,但后来我上传到 Artifactory 的内容很混乱,因为最后一次 ivy 解析是针对测试依赖项完成的,而不是目标二进制文件。
如果我将测试依赖项放在实际二进制文件的 Ivy.xml 中,我会收到以下错误:
"一个模块没有被授权依赖它自己"
...但是我的测试取决于我正在构建的目标二进制文件。
测试项目的 Ivy.xml 文件是否应该实际上不将目标二进制文件列为依赖项?
更新
我现在在目标二进制文件的 Ivy.xml 中有依赖项。
我已将新依赖项标记为具有“测试”配置,以将它们与目标二进制文件所需的依赖项区分开来。
我现在正在研究如何将我的测试项目指向由目标项目的构建生成的二进制文件。我不确定这在技术上是否是 Ivy 的问题。
在构建目标二进制文件后,我是否应该有一个从测试项目到目标二进制文件的相对路径引用?
另一个想法是将目标二进制文件发布到本地缓存,然后在目标项目中从那里引用它。
更新 2
我最终使用 ant 复制任务将目标项目构建的二进制文件复制到包含目标项目依赖项的文件夹中。由于测试项目依赖项在此文件夹中,因此目标项目可以找到目标二进制文件。
【问题讨论】:
-
不再清楚你在问什么。你有没有把你的测试分成一个单独的 ANT 项目?无论如何,您似乎已经发现 ivy 配置可用于使您的测试依赖项分开
-
在同一个项目中运行构建和测试会简单得多。 ivy 可用于管理编译、运行时和测试类路径,使用“配置”和常春藤“缓存路径”任务的组合。
-
是的,这就是我正在做的。我在技术上分别构建它们(目标和测试 dll)。我正在使用一个 ivy.xml 文件来管理两者的依赖关系,并且测试依赖关系在测试配置中。
标签: unit-testing continuous-integration jenkins ivy