Как опубликовать результаты Jest Unit Test в VSTS тестах?
Я нашел несколько вопросов по SO, относящихся к версии для jest unit test, чтобы опубликовать свой результат во вкладке Результаты теста сборки VSTS. Но правильного решения не найдено.
2 ответа
Я пошел бросить некоторые шутки пакеты Npm, такие как [tap-xunit]
1 и jest-json-to-tap
но не мог понять это, чтобы работать. Следующие шаги сработали для меня, чтобы получить результаты для проверки в тесте сборки VSTS.
Установите jest-trx-Results-процессор
npm install jest-trx-results-processor --save-dev
Создайте
jestTrxProcessor.js
файл со следующим содержанием:var builder = require('jest-trx-results-processor');
var processor = builder({ outputFile: 'jestTestresults.trx' });
module.exports = processor;обновленный
package.json
файл должен выглядеть так:"devDependencies": { "jest": "^23.4.1", "jest-trx-results-processor": "0.0.7", "jsdom": "^11.12.0", ... }, "scripts": { "test": "jest" }, "jest": { ..., "testResultsProcessor": "./jestTrxProcessor.js" }
- добавлять
npm
задача VSTS построить дляnpm test
, Это будет запускать шутки и публиковать результаты вjestTestresults.trx
- добавлять
Publish Test Results
задача VSTS добавитьjestTestresults.trx
результаты в тесте VSTS.
- добавлять
Вы сможете увидеть JEST-тесты вместе с другими тестами.
Я использовал другой подход, т.к. после некоторых исследований я обнаружил, что свойство Jest testResultsProcessor устарело. Я использую пакет jest-junit для отчетов об испытаниях (который работал над более поздними версиями, чем jest-trx-results-processor, fwiw):
Добавить jest-junit к
package.json
Например
yarn add -D jest-junit
или жеnpm add --save-dev jest-junit
Добавьте задачу VSTS для запуска Jest с помощью репортера результатов jest-junit
Я использовал задачу Yarn, но вы можете поочередно использовать задачу npm. Я использовал эти аргументы задачи:
jest --ci --reporters=jest-junit --reporters=default --coverage --coverageReporters=cobertura --coverageReporters=html
потому что я также хотел покрытие кода. Чтобы пропустить отчеты о покрытии кода, используйте эти (npm или yarn) аргументы задачи:
jest --ci --reporters=jest-junit --reporters=default
Обратите внимание, что
--reporters=default
есть ли б / у я хотел стандартный вывод в моем журнале сборки.Добавить задачу "Опубликовать результаты теста"
Поскольку мы используем путь по умолчанию, файл результатов теста будет записан в
~/junit.xml
(Необязательно) Добавьте задачу покрытия кода публикации
Если вы используете покрытие кода, вы также можете добавить задачу для публикации результатов покрытия кода:
Решение Эвалдаса устарело, поэтому я собираюсь добавить несколько модификаций.
Более современное решение представляет собой комбинацию Evaldas здесь, а также решение от сопровождающего:https://www.npmjs.com/package/jest-trx-results-processor
Я опишу это как таковое ниже.
Установите jest-trx-results-processor
# NPM npm install jest-trx-results-processor --save-dev # Yarn yarn add -D jest-trx-results-processor
Обновлено
package.json
файл должен выглядеть так:"devDependencies": { "jest": "^24.9.0", "jest-trx-results-processor": "^1.0.2" ... }, "scripts": { "test": "jest" }, "jest": { ..., "reporters": [ "default", [ "jest-trx-results-processor", { "outputFile": "./src/jestTestresults.trx", "defaultUserName": "user name to use if automatic detection fails" } ]]}
добавлять
npm
задача построения VSTS дляnpm test
в конвейере сборки. Должно получиться так:- добавлять
Publish Test Results
задача VSTS добавитьjestTestresults.trx
результаты в тесте VSTS. Для этого в конвейере сборки щелкните значок "Добавить". Найдите "Опубликовать результаты теста". Это вызовет подобное меню. Поскольку это файл.trx, вам нужно использовать VSTest вместо JTest. - Наконец, конвейер сборки для вашего внешнего проекта будет выглядеть так: