unit-testing - 如何使用 Ivy 构建和单元测试?

标签 unit-testing continuous-integration jenkins ivy

使用 Ivy 进行单元测试时,将测试依赖项放入您正在构建的目标二进制文件的 Ivy.xml 文件中是最佳实践吗?还是应该将它们放在您正在构建的测试项目的单独 Ivy.xml 文件中?

我在我的 Jenkins 构建服务器上使用 Ant 构建文件。

最初我计划在目标二进制文件构建后运行单元测试项目,但后来我上传到 Artifactory 的内容变得困惑,因为最后一次 Ivy 解析是针对测试依赖项完成的,而不是目标二进制文件。

如果我将测试依赖项放在实际二进制文件的 Ivy.xml 中,我会收到以下错误:

“模块无权依赖自身”

...但我的测试取决于我正在构建的目标二进制文件。

测试项目的 Ivy.xml 文件是否应该实际上不将目标二进制文件列为依赖项?

更新

我现在在目标二进制文件的 Ivy.xml 中有依赖项。

我已将新依赖项标记为具有“测试”配置,以将它们与目标二进制文件所需的依赖项区分开来。

我现在正在研究如何将我的测试项目指向由目标项目的构建生成的二进制文件。我不确定这在技术上是否是 Ivy 的问题。

构建目标二进制文件后,是否应该有从测试项目到目标二进制文件的相对路径引用?

另一个想法是将目标二进制文件发布到本地缓存,然后在目标项目中从那里引用它。

更新 2

我最终使用 ant 复制任务将从目标项目构建的二进制文件复制到包含目标项目依赖项的文件夹中。由于测试项目依赖项在此文件夹中,因此目标项目可以找到目标二进制文件。

最佳答案

同意马克奥康纳的评论:

一般来说,单元测试的最佳实践是在打包之前对已编译的代码运行测试。

我建议您在编译之后和打包之前将您对单元测试的调用作为一个步骤。大多数情况下,如果测试失败,您不希望将代码打包并上传到工件管理器(除非您有某种形式的特殊情况)。

所有这些都意味着测试应该发生在同一个 Jenkins 工作中。您可以构建两个 DLL,让它们使用相对路径相互引用,并执行测试,所有这些都在同一个作业中。然后你可以将你的二进制文件上传到 Artifactory,确信它通过了测试。

关于unit-testing - 如何使用 Ivy 构建和单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8449859/

相关文章:

api - 列出过去一年的 Jenkins 作业构建详细信息以及触发构建的用户

unit-testing - 单元测试中的NullError

php - 如何在单元测试(PHPUnit)中的 trigger_error(..., E_USER_WARNING) 之后执行代码?

windows - 在 Windows 构建服务器上使用 Internet Explorer 驱动程序截屏时出现黑屏

python - 黑盒测试时的结果执行和呈现

jenkins - 如何在对 Jenkins 的 buildWithParameters 调用中指定多个节点值?

angular - 类型错误 : Cannot read property 'subscribe' of undefined in unit test

java - 显式调用 @PostConstruct 注解的方法

c# - Visual Studio Team Services - 如何将构建的 Windows 服务文件复制到 Azure VM

Jenkins 管道 boolean 参数评估