在foreach循环中首次调用后,Jenkins上的Mstest输出不需要的UTF-8字符

时间:2019-04-02 18:29:18

标签: powershell jenkins-pipeline mstest

我目前正在尝试使用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
  •   

这些奇怪的角色似乎随机产生,我不确定究竟是什么使它们出现。这是我的问题,还是使用其中一个插件?

很抱歉,如果以前已经问过这个问题,那么在网上看到的情况下我找不到解决方案。感谢您抽出宝贵的时间阅读。

1 个答案:

答案 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