Я хочу получить отчет обо всех успешных спецификациях жасмина, которыми управляют карма, что-то вроде того, что вы получаете при использовании только жасмина.
В любом случае, чтобы достичь этого?
Я хочу получить отчет обо всех успешных спецификациях жасмина, которыми управляют карма, что-то вроде того, что вы получаете при использовании только жасмина.
В любом случае, чтобы достичь этого?
Попробуйте этот быстрый плагин, я написал:
Да, но это нетривиально, и тем более, если вы хотите --auto-watch
. Таким образом, в принципе, нет:-( Поразите его на lib/reporters/Progress.js, который проглатывает успешные результаты тестирования и выдает сводную строку для каждого браузера.
Если вы решились, хотя у вас есть (по крайней мере) два нетривиальных способа (в v0.9.2), получив "хороший результат" (один из которых, если вы это сделаете, вы должны отполировать и отправить в виде запроса на растяжение: -))
Как и в большинстве тестовых рамок, вы можете получить Karma для вывода результатов в формате jUnit XML, который затем можно выполнить после обработки...
По умолчанию karma start --reporters=junit
будет записывать отчет jUnit в ${basePath}/test-results.xml
, но вы можете переопределить его с помощью элемента конфигурации junitReporter.outputFile
.
Имейте в виду, что вы можете комбинировать вывод jUnit с другими репортерами (рычание и т.д.) в командной строке: например, karma start --reporters=junit,growl
Я всегда заканчивал свой собственный глупый 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
Если вы для этого, подкласс существующего репортера (например, lib/reporters/Progress.js
, lib/reporters/Base.js
), переопределяя методы .specSuccess
и .onBrowserComplete
, чтобы сообщать больше деталей из каждого теста. Получение кармы для использования репортера оставлено в качестве упражнения для читателя: -)
BTW: Если вы выберете вариант 2, обязательно откройте запрос на pull, чтобы получить его в карме: -)
Чтобы показать отдельный тестовый пример, я использую следующее (начиная с нуля для базового проекта 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)
Там карма-покрытие, которое создает .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/'
}
});
};