使用Ivy进行单元测试时,最好将测试依赖项放入正在构建的目标二进制文件的Ivy.xml文件中吗?或者它们应该在您正在构建的测试项目的单独Ivy.xml文件中吗?
我在Jenkins构建服务器上使用Ant构建文件。
最初我计划在目标二进制文件构建之后运行单元测试项目,但随后我上传到Artifactory时因为测试依赖项而不是目标二进制文件的最后一次常春藤解析而感到困惑。
如果我将测试依赖项放在实际二进制文件的Ivy.xml中,我会收到以下错误:
“模块无权依赖自己”
...但我的测试取决于我正在构建的目标二进制文件。
测试项目的Ivy.xml文件是否实际上没有将目标二进制文件列为依赖项?
更新
我现在在目标二进制文件的Ivy.xml中有依赖项。
我已经将新的依赖项标记为具有“测试”配置,以将它们与目标二进制文件所需的依赖项区分开来。
我现在正在研究如何将我的测试项目指向由目标项目构建产生的二进制文件。我不确定这在技术上是否与常春藤有关。
在构建目标二进制文件后,我是否应该从测试项目到目标二进制文件的相对路径引用?
另一个想法是将目标二进制文件发布到本地缓存,然后在目标项目中从那里引用它。
更新2
我最终使用ant copy任务将目标项目构建的二进制文件复制到其中包含目标项目依赖项的文件夹中。由于测试项目依赖项位于此文件夹中,因此目标项目可以找到目标二进制文件。
答案 0 :(得分:1)
同意Mark O'Connor的评论:
一般情况下,单元测试的最佳实践是在打包之前对已编译的代码运行测试。
我建议在编译之后和包装之前将您的单元测试调用包括在内。大多数情况下,如果测试失败,您不希望将代码打包并上传到工件管理器(除非您有某种形式的特殊情况)。
所有这些都意味着测试应该在同一个Jenkins工作中进行。您可以构建两个DLL,让它们使用相对路径相互引用,并执行测试,所有这些都在同一个作业中。然后,您可以将二进制文件上传到Artifactory,确信它通过了测试。