web-dev-qa-db-ja.com

JestからJUnit XML出力を取得するにはどうすればよいですか?

React Jestテストを含むアプリがあります。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が使用しているものと同じではありませんが、それらを一緒にフックする方法がわかりません。

18
Drew Stephens

上記の設定で不足しているのは、unmockedModulePathPatternsjasmine-reportersを追加することだけなので、次のように実行します。

"jest": {

   ...

   "unmockedModulePathPatterns": [
     "./node_modules/q",
     "./node_modules/react",
     "./node_modules/jasmine-reporters"
   ]
},

お役に立てば幸いです。

UPDATE:この問題を経験している他の人のために、私は実用的なデモを公開しました ここ

3
Joe Devine

より新しいバージョンのjest(私は16.0.2を見ています)を使用している場合、jasmineがデフォルトであるため、testrunnerを指定する必要はありません。また、jest設定のunmockedModulePathPatternsセクションは必要ありません。

つまりpackage.jsonに次のdevDependenciesを含めるだけです。

"jasmine-reporters": "^2.2.0",
"jest": "^16.0.2",
"jest-cli": "^16.0.2"

そして、このjest設定をpackage.jsonに追加します(注:unmockedModulePathPatternsセクションは不要です):

"jest": {
  "setupTestFrameworkScriptFile": "./setup-jasmine-env.js"
}

次に、質問からDrewのsetup-jasmine-env.jsを使用します。

7
supamanda

JestはtestResultsProcessor設定を介して独自のレポーターをサポートしています。だから私はこれのために互換性のあるjunit xmlを生成する小さなことを書きました。ここで見つけることができます。 https://github.com/palmerj3/jest-junit

6