Как опубликовать результаты Jest Unit Test в VSTS тестах?

Я нашел несколько вопросов по SO, относящихся к версии для jest unit test, чтобы опубликовать свой результат во вкладке Результаты теста сборки VSTS. Но правильного решения не найдено.

2 ответа

Решение

Я пошел бросить некоторые шутки пакеты Npm, такие как [tap-xunit] 1 и jest-json-to-tap но не мог понять это, чтобы работать. Следующие шаги сработали для меня, чтобы получить результаты для проверки в тесте сборки VSTS.

  1. Установите jest-trx-Results-процессор

    npm install jest-trx-results-processor --save-dev

  2. Создайте jestTrxProcessor.js файл со следующим содержанием:

    var builder = require('jest-trx-results-processor');
    var processor = builder({ outputFile: 'jestTestresults.trx' });
    module.exports = processor;

  3. обновленный 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" }

    1. добавлять npm задача VSTS построить для npm test, Это будет запускать шутки и публиковать результаты в jestTestresults.trx
    2. добавлять Publish Test Results задача VSTS добавить jestTestresults.trx результаты в тесте VSTS.

Вы сможете увидеть JEST-тесты вместе с другими тестами.

Я использовал другой подход, т.к. после некоторых исследований я обнаружил, что свойство Jest testResultsProcessor устарело. Я использую пакет jest-junit для отчетов об испытаниях (который работал над более поздними версиями, чем jest-trx-results-processor, fwiw):

  1. Добавить jest-junit к package.json

    Например yarn add -D jest-junit или же npm add --save-dev jest-junit

  2. Добавьте задачу 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 есть ли б / у я хотел стандартный вывод в моем журнале сборки.

  3. Добавить задачу "Опубликовать результаты теста"

    Поскольку мы используем путь по умолчанию, файл результатов теста будет записан в ~/junit.xml

Задача

  1. (Необязательно) Добавьте задачу покрытия кода публикации

    Если вы используете покрытие кода, вы также можете добавить задачу для публикации результатов покрытия кода:

Задача

Решение Эвалдаса устарело, поэтому я собираюсь добавить несколько модификаций.

Более современное решение представляет собой комбинацию Evaldas здесь, а также решение от сопровождающего:https://www.npmjs.com/package/jest-trx-results-processor

Я опишу это как таковое ниже.

  1. Установите jest-trx-results-processor

    # NPM
    npm install jest-trx-results-processor --save-dev
    
    # Yarn
    yarn add -D jest-trx-results-processor
    
  2. Обновлено 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"
      }
    ]]}
    
  3. добавлять npm задача построения VSTS для npm testв конвейере сборки. Должно получиться так:

  4. добавлять Publish Test Results задача VSTS добавить jestTestresults.trxрезультаты в тесте VSTS. Для этого в конвейере сборки щелкните значок "Добавить". Найдите "Опубликовать результаты теста". Это вызовет подобное меню. Поскольку это файл.trx, вам нужно использовать VSTest вместо JTest.
  5. Наконец, конвейер сборки для вашего внешнего проекта будет выглядеть так:
Другие вопросы по тегам