我目前正在尝试使用Jenkins为我们的一种软件建立CI管道。我现在需要使用MsTest运行每个单独的测试文件。根据我的阅读,与NUnit或其他流行的测试框架不同,MsTest不允许您从解决方案文件夹运行所有测试。我必须递归检查解决方案文件夹中的每个文件夹,并在ForEach-Object循环中手动运行每个测试容器。目前,前几个测试套件可以完美运行并打印日志。但是,大约在测试阶段的中间,Jenkins日志中出现了一些奇怪的字符,这似乎导致测试失败。
我在网上查看过,在大多数类似情况下,遇到此问题的人都使用了较旧版本的插件,但我的情况并非如此。我们正在使用Jenkins 2.15和PowerShell 4.0。这是测试阶段的代码。
stage ('Unit tests') {
steps {
script {
powershell("""
Get-ChildItem -Path .\\*\\bin\\*Tests.dll -Recurse |
ForEach-Object {
\$obj = \$_;
& \"${tool 'MsTest'}\" /category:.\"ExpectedState|CurrentState|Uncategorized\" /testcontainer:\"\$obj\";
}
""")
}
}
}
这是詹金斯日志输出的一部分
Microsoft(R)测试执行命令行工具版本14.0.23107.0 版权所有(c)Microsoft Corporation。保留所有权利。
正在加载D:\ jenkins-workspace \ workspace \ MultiBranch_Pipeline \ Acceptance.Tests \ bin \ Release \ Acceptance.Tests.dll ... 开始执行...
摘要
测试运行不确定。
不确定7
总计7
结果文件:D:\ jenkins-> workspace \ workspace \ MultiBranch_Pipeline \ TestResults \ JenkinsAdmin 2019-04-02 13_47_54.trx
测试设置:默认测试设置
然后最终在ForEach循环中
开始执行... 没有要执行的测试。
powershell.exe:ï¿>
在D:\ jenkins-workspace \ workspace \ MultiBranch_Pipeline \ durable-5fe1 \ powershellWrapper.ps1:3 char:1 +&powershell -NoProfile -NonInteractive -ExecutionPolicy绕过-命令“&'D:\ ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo:未指定:(:):RemoteException
- FullyQualifiedErrorId:NativeCommandError
这些奇怪的角色似乎随机产生,我不确定究竟是什么使它们出现。这是我的问题,还是使用其中一个插件?
很抱歉,如果以前已经问过这个问题,那么在网上看到的情况下我找不到解决方案。感谢您抽出宝贵的时间阅读。
答案 0 :(得分:0)
后来参加我自己的聚会,但我最终在SO上得到了这个答案。
我忽略了这个答案,因为我认为我的问题在其他地方,但这确实是我想要的。
How set encodings in Jenkins to UTF-8
编辑:
根据此答案: JVM property -Dfile.encoding=UTF8 or UTF-8?
您必须将此JVM设置添加到Jenkins启动脚本中 (JAVA_TOOLS_OPTIONS):
-Dfile.encoding=UTF8