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



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

我们的构建如下:

  1. 构建
  2. 部署
  3. 测试(使用VSTest)
  4. 生成文档(使用Pickles)

生成文档步骤在测试步骤之后,因此我们可以将测试结果包括在pickle中。我想使用pickle作为构建步骤,这样我就可以管理要使用的pickle版本以及每个解决方案中的其他选项。

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不支持自定义名称。其他人遇到过这个问题吗?有没有一个好的方法来解决它?

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

应要求:这就是我解决问题的方法。这更像是一种在我的特定情况下有效的变通方法,但在底部我解释了我希望它能很快得到解决。

  1. 在测试构建步骤之后立即创建命令行构建步骤
  2. 作为工具使用Rename
  3. 作为参数使用"$(build.sourcesdirectory)TestResults*.trx" TestResults.trx

现在您可以使用VisualStudioBuild步骤来生成pickle文档(您需要在项目中使用pickle作为NuGet包)

  1. 作为解决方案集$(Build.SourcesDirectory)/yourproject.csproj
  2. 作为构建参数设置附加参数:

    /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"
    

正如我所说,重命名有点麻烦,所以我扩展了pickle本身的代码以启用通配符支持,现在它是pickle repo中的一个pull请求,所以希望它能在下一个版本中实现,大家都可以这样使用它:)。

最新更新