Jestjs 如何在VSTS测试中发布Jest单元测试结果?
我发现了一些特定于jest单元测试的版本,可以在VSTS构建测试结果选项卡中发布其结果。但是没有找到合适的解决方案。我扔了一些jest npm包,比如和Jestjs 如何在VSTS测试中发布Jest单元测试结果?,jestjs,azure-pipelines-build-task,Jestjs,Azure Pipelines Build Task,我发现了一些特定于jest单元测试的版本,可以在VSTS构建测试结果选项卡中发布其结果。但是没有找到合适的解决方案。我扔了一些jest npm包,比如和jest json,去点击,但无法找到它的工作。下面的步骤对我来说很有效,我可以在构建中查看结果 安装 创建包含以下内容的jestTrxProcessor.js文件: var builder=require('jest-trx-results-processor'); 变量处理器=生成器({ 输出文件:“jestTestresults.trx”
jest json,去点击
,但无法找到它的工作。下面的步骤对我来说很有效,我可以在构建中查看结果
jestTrxProcessor.js
文件:
var builder=require('jest-trx-results-processor');
变量处理器=生成器({
输出文件:“jestTestresults.trx”
});
module.exports=处理器;
package.json
文件应如下所示:
“devDependencies”:{
“笑话”:“^23.4.1”,
“jest trx结果处理器”:“0.0.7”,
“jsdom”:“^11.12.0”,
...
},
“脚本”:{
“测试”:“开玩笑”
},
“笑话”:{
...,
“testResultsProcessor”:“/jestTrxProcessor.js”
}
npm测试添加npm
。这将运行jest测试并将结果发布到jestTestresults.trx
Publish Test Results
以在VSTS测试中添加jestestresults.trx
结果您将能够看到JEST测试和其他测试。我使用了一种不同的方法,b/c经过一些研究,我发现。我正在使用jest-junit的测试报告包(它比jest-trx结果处理器fwiw更近):
package.json
例如warneadd-djestjunit
或npmadd--savedevjestjunit
jest --ci --reporters=jest-junit --reporters=default --coverage --coverageReporters=cobertura --coverageReporters=html
jest --ci --reporters=jest-junit --reporters=default
因为我还想要代码覆盖率。要跳过代码覆盖率报告,请使用以下(npm或THEAN)任务参数:
jest --ci --reporters=jest-junit --reporters=default --coverage --coverageReporters=cobertura --coverageReporters=html
jest --ci --reporters=jest-junit --reporters=default
请注意,--reporters=default
在构建日志中是否有我想要的默认标准输出~/junit.xml
-任务:geeklearningio.gl-vsts-tasks-warn.warn-task。Yarn@2
displayName:“安装依赖项”
投入:
参数:安装--无进展
-任务:geeklearningio.gl-vsts-tasks-warn.warn-task。Yarn@2
displayName:“单元测试”
投入:
参数:“test--ci--reporters=jest-junit--reporters=default--coverage--coverageReporters=cobertura”
continueOnError:true#测试失败应在生成失败之前发布
-任务:PublishTestResults@2
displayName:“发布Jest单元测试结果”
投入:
testResultsFiles:junit.xml
mergeTestResults:true
testRunTitle:“Jest单元测试”
failTaskOnFailedTests:真
-任务:PublishCodeCoverageResults@1
displayName:“从Jest测试发布代码覆盖率”
投入:
codeCoverageTool:Cobertura
summaryFileLocation:“$(System.DefaultWorkingDirectory)/coverage/cobertura coverage.xml”
#reportDirectory:“$(System.DefaultWorkingDirectory)/coverage”
failifcoverage空:对
Evaldas'解决方案已过时,因此我将添加一些修改
更现代的解决方案是Evaldas与维护人员的结合:
我将在下面这样描述它
# NPM
npm install jest-trx-results-processor --save-dev
# Yarn
yarn add -D jest-trx-results-processor
package.json
文件应如下所示:
“devDependencies”:{
“玩笑”:“^24.9.0”,
jest trx结果处理器“^1.0.2”
...
},
“脚本”:{
“测试”:“开玩笑”
},
“笑话”:{
...,
“记者”:[
“默认”,
[
“jest trx结果处理器”,
{
“outputFile”:“/src/jestTestresults.trx”,
“defaultUserName”:“自动检测失败时使用的用户名”
}
]]}
npm
任务添加到VSTS构建中,以在构建管道中进行npm测试。应该是这样的:
发布测试结果
VSTS任务,以在VSTS测试中添加jestestresults.trx
结果。为此,在构建管道中,单击“添加符号”。查找“发布测试结果”。会出现这样的菜单。因为它是一个.trx文件,所以需要使用VSTest而不是JTest。
谢谢,这帮了大忙。总的来说,只有两个问题可以解决。一个是“测试文件”过滤器将每个jest测试显示为一个单独的文件,而不是“vstest”程序集的每个dll/exe,但这并不太糟糕,因为至少每个测试都单独显示。另一个问题是,构建似乎仅限于一个“覆盖率”结果,我构建了一个web包捆绑包,该捆绑包进入ASP.NET web应用程序。web应用程序vstest覆盖覆盖率覆盖了jest覆盖率,但我仍然有完整报告的工件,所以两者都有。RE第一个问题-您检查了junit.xml文件了吗?看起来对吗?您可以调整jest junit reporter通过配置发出属性的方式。第二个问题听起来像是Azure DevOps中的一个缺陷(每个构建计划不支持超过1个覆盖率报告)——最好报告它。我没有这个问题,b/c到目前为止,我们的UI代码是在一个独立于服务器代码的构建计划中构建的。我看了看,它看起来“正常”,但不确定它是如何映射到azure DevOps期望的。将玩一点,看看配置是否可以调整以获得更好的结果。非常有用的答案。您可能还需要考虑<代码> StuteOnError:Trime< /Cord>(任务)