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

Tfs 允许pickle导入测试结果的MSBuild参数导致非法路径错误,tfs,msbuild,specflow,picklesdoc,Tfs,Msbuild,Specflow,Picklesdoc,我们使用SpecFlow应用BDD实践和pickle生成文档 我们的构建如下所示: /t:DocumentationGeneration /p:Pickles_Generate=True /p:Pickles_DocumentationFormat=dhtml /p:Pickles_ResultsFile="$(build.sourcesdirectory)/TestResults/*.trx" /p:Pickles_OutputDirectory="$(build.artifactstag

我们使用SpecFlow应用BDD实践和pickle生成文档

我们的构建如下所示:

/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]
  • 建造
  • 部署
  • 测试(使用VSTest)
  • 生成文档(使用Pickles)
  • 生成文档步骤在测试步骤之后,因此我们可以将测试结果包含到pickle中。我想将pickles用作构建步骤,以便管理每个解决方案中要使用的pickles版本和其他选项

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

    /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\u ResultsFile=“$(build.sourcesdirectory)/TestResults/TestResults.trx”替换它时,似乎是
    *
    导致了这个错误。
    根本没有问题,因为测试结果是非预测格式的:
    用户名\u服务器名1234 2017-02-02 09\u 09\u 09.trx


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

    Pickles只支持测试结果文件的确切名称。GitHub项目站点上存在允许通配符的。作为Pickles的维护者,我很乐意查看解决该问题的任何pull请求。

    应请求:我就是这样解决的。这更像是一个在我的特殊情况下工作的方法,但在底部我解释了我希望它能很快得到解决

  • 在测试生成步骤之后立即创建命令行生成步骤
  • 作为工具使用
    重命名
  • 作为参数使用
    “$(build.sourcesdirectory)\TestResults\*.trx”TestResults.trx
  • 现在,您可以使用VisualStudio构建步骤生成pickles文档(您的项目中需要将pickles作为NuGet包)

  • 作为解决方案集
    $(Build.SourcesDirectory)/yourproject.csproj
  • 当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"
    

  • 正如我所说的,重命名是一项工作,因此我扩展了pickles代码本身以支持通配符,现在是这样,所以希望它能在下一个版本中实现,并且大家都可以这样使用:)。

    除了找出确切的文件名,可能没有其他选择。这并不难,它是内置的msbuild功能,原则是将自定义的“PicklesResultsDir”传递给项目,并在项目中使用msbuild查找具有
    的文件。你没有说你的解决方案/项目布局是什么,所以我不能告诉你把这个逻辑放在哪里。嗨@dirk rombauts,谢谢你的优秀产品。我会调查的,也许我甚至可以推动修复!(无论如何,我有一个真实的测试用例:)。现在我用另一个构建步骤重命名了.trx文件,解决了这个问题。我很高兴你找到了一个方法让它为你工作!请随便问我是否还有其他与泡菜相关的事情可以帮助您。@Cece MSFT已完成。将在适当时更新(即支持通配符)。