允许pickles导入测试结果的MSBuild参数导致非法路径错误

时间:2017-02-02 07:56:07

标签: tfs msbuild specflow tfs2017 picklesdoc

我们正在使用SpecFlow来应用BDD实践和Pickles来生成文档。

我们的构建如下:

  1. 构建
  2. 部署
  3. 测试(使用VSTest)
  4. 生成文档(使用Pickles)
  5. 生成文档步骤在测试步骤之后,因此我们可以将测试结果包含在pickles中。我想使用泡菜作为构建步骤,因此我可以管理要使用的泡菜版本以及每个解决方案中的其他选项。

    TFS2017中的Visual Studio Build步骤如下所示:

    /t:DocumentationGeneration 
    /p:Pickles_Generate=True 
    /p:Pickles_DocumentationFormat=dhtml
    /p:Pickles_ResultsFile="$(build.sourcesdirectory)/TestResults/*.trx"
    /p:Pickles_OutputDirectory="$(build.artifactstagingdirectory)/PickledDocumentation"
        [some more generic parameters that are not relevant here]
    

    当我执行上述操作时,我会在路径中找到一个非法字符"构建期间出错。似乎导致此错误的*,当我用/p:Pickles_ResultsFile="$(build.sourcesdirectory)/TestResults/testresults.trx"替换它时根本没有问题,因为测试结果是非预测格式,所以只找不到测试结果:
    USERNAME_SERVERNAME1234 2017-02-02 09_09_09.trx

    我试着研究为.trx文件生成通用名称,但VSTest不支持自定义名称。有没有其他人遇到过这个问题,有没有一个很好的方法来解决它?

2 个答案:

答案 0 :(得分:2)

Pickles仅支持测试结果文件的确切名称。 GitHub项目站点上有issue允许使用通配符。作为Pickles的维护者,我很乐意回顾任何解决该问题的拉取请求。

答案 1 :(得分:0)

根据要求:这是我解决它的方式。在我的特定情况下,这是一个更有效的工作,但在底部,我解释了我希望它很快就能解决。

  1. 在测试构建步骤之后立即创建命令行构建步骤
  2. 作为工具使用Rename
  3. 作为参数使用"$(build.sourcesdirectory)\TestResults\*.trx" TestResults.trx
  4. 现在,您可以使用Visual Studio Build步骤生成pickles文档(您需要在项目中将pickle作为NuGet包)

    1. 作为解决方案集$(Build.SourcesDirectory)/yourproject.csproj
    2. 由于buildarguments设置了其他参数:

      /t:DocumentationGeneration 
      /p:Pickles_Generate=True  
      /p:Pickles_DocumentationFormat=dhtml
      /p:Pickles_ResultsFile="$(build.sourcesdirectory)/TestResults/TestResults.trx" 
      /p:Pickles_ResultsFormat="vstest"
      /p:Pickles_OutputDirectory="yourdestinationpath"
      
    3. 正如我所说,重命名有点麻烦,所以我扩展了pickles本身的代码以启用通配符支持,现在是a pull request in the pickles repo,所以希望它在下一个版本中实现并且你们都可以这样使用:)。