我想获得一份所有成功的 jasmine 规格的报告,这些规格与 karma 一起运行,就像您在单独使用 jasmine 时获得的一样。
有没有办法做到这一点?
我想获得一份所有成功的 jasmine 规格的报告,这些规格与 karma 一起运行,就像您在单独使用 jasmine 时获得的一样。
有没有办法做到这一点?
试试我写的这个快速插件:
是的,但这很重要,如果你愿意的话,更是如此--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/等。在这种情况下使用管道,但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
方法以报告每个测试的更多详细信息。让业力使用记者作为练习留给读者:-)
顺便说一句:如果您选择选项 2,请务必打开拉取请求以将其纳入 karma :-)
为了显示单个测试用例,我使用以下内容(从头开始基本单元测试项目):
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并
代替:
记者:['进展']
和:
记者:['规格']
跑
karma start
并且您已准备好在 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)
有 karma-coverage 可以创建 .html 代码覆盖率报告。将它集成到您的 karma 配置中很简单。
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/'
}
});
};