26

我想获得一份所有成功的 jasmine 规格的报告,这些规格与 karma 一起运行,就像您在单独使用 jasmine 时获得的一样。

有没有办法做到这一点?

4

4 回答 4

22

试试我写的这个快速插件:

https://github.com/dtabuenc/karma-html-reporter

于 2013-10-02T04:54:58.637 回答
8

tl;博士

是的,但这很重要,如果你愿意的话,更是如此--auto-watch。所以,基本上,不 :-( 归咎于lib/reporters/Progress.js,它吞噬了成功的测试结果并为每个浏览器吐出了一个摘要行。

但是,如果你下定决心,你有(至少)两种非平凡的方法(在v0.9.2中)获得“足够好”的结果(其中一种,如果你这样做,你应该完善并提交为拉取请求:-))

选项 1:jUnit 抓取

与大多数测试框架一样,您可以让 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/等。在这种情况下使用管道,但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.jslib/reporters/Base.js,覆盖.specSuccess.onBrowserComplete方法以报告每个测试的更多详细信息。让业力使用记者作为练习留给读者:-)

顺便说一句:如果您选择选项 2,请务必打开拉取请求以将其纳入 karma :-)

于 2013-05-31T20:12:08.560 回答
2

为了显示单个测试用例,我使用以下内容(从头开始基本单元测试项目):

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)
于 2015-05-19T10:42:08.963 回答
-1

有 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/'
    }
  });
};
于 2014-06-05T09:28:50.650 回答