我们使用SpecFlow应用BDD实践和Pickles来生成文档。
我们的构建如下:
- 构建
- 部署
- 测试(使用VSTest)
- 生成文档(使用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请求。
应要求:这就是我解决问题的方法。这更像是一种在我的特定情况下有效的变通方法,但在底部我解释了我希望它能很快得到解决。
- 在测试构建步骤之后立即创建命令行构建步骤
- 作为工具使用
Rename
- 作为参数使用
"$(build.sourcesdirectory)TestResults*.trx" TestResults.trx
现在您可以使用VisualStudioBuild步骤来生成pickle文档(您需要在项目中使用pickle作为NuGet包)
- 作为解决方案集
$(Build.SourcesDirectory)/yourproject.csproj
-
作为构建参数设置附加参数:
/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请求,所以希望它能在下一个版本中实现,大家都可以这样使用它:)。