如何从 Jest 获得 JUnit XML 输出?
How do I get JUnit XML output from Jest?
我有一个包含 Jest 测试的 React 应用程序。我正在 package.json
:
中配置 Jest
…
"jest": {
"setupEnvScriptFile": "./test/jestenv.js",
"setupTestFrameworkScriptFile": "./test/setup-jasmine-env.js",
"testRunner": "node_modules/jest-cli/src/testRunners/jasmine/jasmine2.js",
"unmockedModulePathPatterns": [
"./node_modules/q",
"./node_modules/react"
]
},
…
setup-jasmine-env.js
看起来像这样:
var jasmineReporters = require('jasmine-reporters');
jasmine.VERBOSE = true;
jasmine.getEnv().addReporter(
new jasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: "output/",
filePrefix: "test-results"
})
);
需要一些工作才能正确设置 jasmine env,但我在 output
目录中没有看到任何东西(实际上,它没有创建,我自己创建它也无济于事)。我怀疑我对 jasmine
var 的更改与 Jest 使用的不同,但我不知道如何将它们连接在一起。
看起来您在上述设置中缺少的只是将 jasmine-reporters
添加到 unmockedModulePathPatterns
,所以请尝试以下操作:
"jest": {
...
"unmockedModulePathPatterns": [
"./node_modules/q",
"./node_modules/react",
"./node_modules/jasmine-reporters"
]
},
希望对您有所帮助!
更新: 对于遇到此问题的任何其他人,我已经提供了一个工作演示 here。
如果您使用更新版本的 jest(我正在查看 16.0.2),则无需指定 testrunner
,因为 jasmine 是默认设置。您也不需要 jest 配置的 unmockedModulePathPatterns
部分。
即您只需要在 package.json
:
中包含以下 devDependencies
"jasmine-reporters": "^2.2.0",
"jest": "^16.0.2",
"jest-cli": "^16.0.2"
并将这个笑话配置添加到您的 package.json
(注意:您不再需要 unmockedModulePathPatterns
部分):
"jest": {
"setupTestFrameworkScriptFile": "./setup-jasmine-env.js"
}
然后从问题中使用 Drew 的 setup-jasmine-env.js
。
Jest 通过 testResultsProcessor 配置支持自己的记者。所以我为此写了一个生成兼容的 junit xml 的小东西。你可以在这里找到它。 https://github.com/palmerj3/jest-junit
我有一个包含 Jest 测试的 React 应用程序。我正在 package.json
:
…
"jest": {
"setupEnvScriptFile": "./test/jestenv.js",
"setupTestFrameworkScriptFile": "./test/setup-jasmine-env.js",
"testRunner": "node_modules/jest-cli/src/testRunners/jasmine/jasmine2.js",
"unmockedModulePathPatterns": [
"./node_modules/q",
"./node_modules/react"
]
},
…
setup-jasmine-env.js
看起来像这样:
var jasmineReporters = require('jasmine-reporters');
jasmine.VERBOSE = true;
jasmine.getEnv().addReporter(
new jasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: "output/",
filePrefix: "test-results"
})
);
需要一些工作才能正确设置 jasmine env,但我在 output
目录中没有看到任何东西(实际上,它没有创建,我自己创建它也无济于事)。我怀疑我对 jasmine
var 的更改与 Jest 使用的不同,但我不知道如何将它们连接在一起。
看起来您在上述设置中缺少的只是将 jasmine-reporters
添加到 unmockedModulePathPatterns
,所以请尝试以下操作:
"jest": {
...
"unmockedModulePathPatterns": [
"./node_modules/q",
"./node_modules/react",
"./node_modules/jasmine-reporters"
]
},
希望对您有所帮助!
更新: 对于遇到此问题的任何其他人,我已经提供了一个工作演示 here。
如果您使用更新版本的 jest(我正在查看 16.0.2),则无需指定 testrunner
,因为 jasmine 是默认设置。您也不需要 jest 配置的 unmockedModulePathPatterns
部分。
即您只需要在 package.json
:
devDependencies
"jasmine-reporters": "^2.2.0",
"jest": "^16.0.2",
"jest-cli": "^16.0.2"
并将这个笑话配置添加到您的 package.json
(注意:您不再需要 unmockedModulePathPatterns
部分):
"jest": {
"setupTestFrameworkScriptFile": "./setup-jasmine-env.js"
}
然后从问题中使用 Drew 的 setup-jasmine-env.js
。
Jest 通过 testResultsProcessor 配置支持自己的记者。所以我为此写了一个生成兼容的 junit xml 的小东西。你可以在这里找到它。 https://github.com/palmerj3/jest-junit