Подтвердить что ты не робот

Генерировать отчет о жасмине с использованием Karma Runner

Я хочу получить отчет обо всех успешных спецификациях жасмина, которыми управляют карма, что-то вроде того, что вы получаете при использовании только жасмина.

В любом случае, чтобы достичь этого?

4b9b3361

Ответ 2

TL;DR

Да, но это нетривиально, и тем более, если вы хотите --auto-watch. Таким образом, в принципе, нет:-( Поразите его на lib/reporters/Progress.js, который проглатывает успешные результаты тестирования и выдает сводную строку для каждого браузера.

Если вы решились, хотя у вас есть (по крайней мере) два нетривиальных способа (в v0.9.2), получив "хороший результат" (один из которых, если вы это сделаете, вы должны отполировать и отправить в виде запроса на растяжение: -))

Вариант 1: jUnit scraping

Как и в большинстве тестовых рамок, вы можете получить Karma для вывода результатов в формате jUnit XML, который затем можно выполнить после обработки...

По умолчанию karma start --reporters=junit будет записывать отчет jUnit в ${basePath}/test-results.xml, но вы можете переопределить его с помощью элемента конфигурации junitReporter.outputFile.

Имейте в виду, что вы можете комбинировать вывод jUnit с другими репортерами (рычание и т.д.) в командной строке: например, karma start --reporters=junit,growl

Постобработка с ant

Постобработка с XSLT

Постобработка с xmlstarlet

Я всегда заканчивал свой собственный глупый grep/sed/perl/etc. конвейер в таких случаях, но xmlstarlet идеально подходит для этой работы. Например.

$ cat test-runner.xml \
    | xml sel -t -m "//testcase" -v @classname -o " " -v @name -nl

дает (для одного из моих проектов):

Chrome 27.0 (Linux).Globalization API: _g11n exists
Chrome 27.0 (Linux).Globalization API: _g11n has been initialized
Chrome 27.0 (Linux).Globalization API: _g11n _locales exists
Chrome 27.0 (Linux).Globalization API: _g11n _locales has been initialized
Chrome 27.0 (Linux).Globalization API: _g11n _locales has a current locale (matching the default)
Chrome 27.0 (Linux).Globalization API: _g11n _locales registry allows lookup by full code
Chrome 27.0 (Linux).Globalization API: _g11n _locales registry allows lookup by locale object
Chrome 27.0 (Linux).Globalization API: _g11n _locales registry fails
Chrome 27.0 (Linux).Globalization controllers hkmLocaleCtrl should have the locales database

Вариант 2: Напишите пользовательский репортер

Если вы для этого, подкласс существующего репортера (например, lib/reporters/Progress.js, lib/reporters/Base.js), переопределяя методы .specSuccess и .onBrowserComplete, чтобы сообщать больше деталей из каждого теста. Получение кармы для использования репортера оставлено в качестве упражнения для читателя: -)

BTW: Если вы выберете вариант 2, обязательно откройте запрос на pull, чтобы получить его в карме: -)

Ответ 3

Чтобы показать отдельный тестовый пример, я использую следующее (начиная с нуля для базового проекта unit test):

npm install karma karma-jasmine karma-phantomjs-launcher karma-spec-reporter

touch main.js main.spec.js

karma init

затем на следующие вопросы выберите:

Which testing framework do you want to use ?
> jasmine

Do you want to capture any browsers automatically ?
> PhantomJS
> 

What is the location of your source and test files ?
> *.js

Do you want Karma to watch all the files and run the tests on change ?
> yes

отредактируйте karma.conf.js в папке проекта и

заменить:

журналисты: ['progress']

с:

журналисты: ['spec']

run

karma start

и вы готовы написать свой unit test в файле main.spec.js

describe('suite', function () {
    it('expectation', function () {
        expect(true).toBeTruthy();
    });
});

сохранить... и в терминале вы должны увидеть что-то вроде:

INFO [watcher]: Changed file"/main.spec.js".
true
  ✓ should be true

PhantomJS 1.9.8 (Mac OS X): Executed 1 of 1 SUCCESS (0.001 secs / 0 secs)

Ответ 4

Там карма-покрытие, которое создает .html отчеты о покрытии кода. Это прямолинейно, чтобы интегрировать его в конфигурацию вашей кармы.

https://github.com/karma-runner/karma-coverage

npm install karma-coverage --save-dev

добавить в karma.conf.js:

// karma.conf.js
module.exports = function(config) {
  config.set({
    files: [
      'src/**/*.js',
      'test/**/*.js'
    ],

    // coverage reporter generates the coverage
    reporters: ['progress', 'coverage'],

    preprocessors: {
      // source files, that you wanna generate coverage for
      // do not include tests or libraries
      // (these files will be instrumented by Istanbul)
      'src/*.js': ['coverage']
    },

    // optionally, configure the reporter
    coverageReporter: {
      type : 'html',
      dir : 'coverage/'
    }
  });
};