我已将Jenkins配置为使用Mercurial作为源代码管理的项目的CI。我在Jenkins中使用MSTest插件来查看测试结果,我编写了一个bat命令来生成测试结果文件
del results.trx
mstest /testcontainer:Example\TestProject1\bin\debug\TestProject2.dll /resultsfile:results.trx
它在控制台中发出错误说文件“未找到示例\ TestProject1 \ bin \ debug \ TestProject2.dll”
当每次构建发生时,在%WORKSPACE%下创建一个具有新名称的文件夹(SYSTEM_My_Computer_Name 2011-06-08 13_04_11)。因为测试dll在一个名为out的目录中。我怎样才能获得该dll的路径,因为每个构建都更改了目录名称?
当我使用像“c:\ Example \ TestProject1 \ bin \ debug \ TestProject2.dll”这样的绝对网址时工作正常
我们如何引用新建的dll? 我是否需要将测试dll文件添加到存储库中?
答案 0 :(得分:2)
Jenkins以%WORKSPACE%
作为当前目录运行bat文件。
如错误消息所示,测试容器的相对路径错误。我可以想到两件可能成为问题的事情:
%WORKSPACE%
下的文件夹结构与您的相对路径不匹配。在bat文件中自己添加cd
将在构建输出中显示这是什么。您还可以使用Jenkins web ui中的链接来浏览工作区。
您正在Jenkins中构建不同的msbuild目标,例如 release 。然后 \ bin \ debug 可能不存在。
答案 1 :(得分:1)
文件夹“SYSTEM_My_Computer_Name 2011-06-08 13_04_11”不是由Jenkins在构建期间创建的,而是由mstest在运行测试时创建的。调用mstest时的根文件夹是工作空间根文件夹,因此应该从工作空间根目录指定testcontainer文件。
例如,假设dll文件位于C:\ jenkins \ jobs \\ workspace \ TestProject1 \ bin \ debug \ TestProject2.dll(假设您的jenkins安装在c:\ jenkins下)。
命令应该是(相对于工作空间根文件夹):
mstest /testcontainer:TestProject1\bin\debug\TestProject2.dll /resultsfile:results.trx