2

この自動化された単体テストのマラーキーを学習しようとしています。Grunt を使用して Mocha テストを自動的に実行し、テスト結果をファイルに出力したいと考えています。私が理解できる限り、これにはgrunt-mocha-covを使用する必要があります。テストに合格すると、Grunt は結果ファイルを書き出します。しかし、そのうちの 1 つが失敗すると、次のようになります。

Running "mochacov:all" (mochacov) task
Warning:  Use --force to continue.

Aborted due to warnings.

そして、ファイルは作成されません。誰が私が間違っているのか教えてもらえますか?

私のプロジェクトは次のように編成されています。

ここに画像の説明を入力

テスト フォルダーには、次のような単一のファイル test.js が含まれています。

   var chai = require("chai"),
   assert = chai.assert,
   expect = chai.expect;

    var foobar = {
      sayHello: function() {
        return 'Hello World!';
      }
    }

    describe('Foobar', function() {
      describe('#sayHello()', function() {
        it('should work with assert', function() {
          assert.equal(foobar.sayHello(), 'Hello World!');
        });
        it('should work with expect', function() {
          expect(foobar.sayHello()).to.equal('Hello Worlxd!');
        });
      });
    });

package.json には次のものがあります。

{
  "name": "GruntTest",
  "version": "0.0.1",
  "private": true,
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-mocha-cli": "~1.3.0",
    "grunt-contrib-qunit": "~0.3.0",
    "grunt-contrib-jshint": "~0.6.4",
    "grunt-mocha": "~0.4.1",
    "should": "~2.0.1",
    "chai": "~1.8.1",
    "grunt-mocha-cov": "0.0.7"
  },
  "description": "Grunt Test",
  "main": "grunt.js",
  "dependencies": {
    "grunt": "~0.4.1"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "BSD"
}

そして、ここに私の Gruntfile.js があります:

module.exports = function(grunt) {

  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    mochacov: {
       options: {
         reporter: 'XUnit',
         require: ['should'],
         output: 'test-results.xml',
         bail: false
       },
       all: ['test/*.js']
     }
  });

  grunt.loadNpmTasks('grunt-mocha-cov');
  grunt.registerTask('default', ['mochacov']);

};

編集

xavier のアドバイスに従って、mochacov と xunit-file レポーターで動作するようになりました。他の人に役立つ場合に備えて、これが私の新しく改善されたGruntfileです。

module.exports = function(grunt) {

  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    mochacov: {
     options: {
       reporter: 'xunit-file',
       require: ['should'],
       bail: false
     },
     all: ['test/*.js']
   }
  });

  grunt.loadNpmTasks('grunt-mocha-cov');
  grunt.registerTask('default', ['mochacov']);

};

ターミナルには「警告により中止されました」という警告が表示されますが、mochacov はテスト結果を含むファイル xunit.xml を作成します。

4

1 に答える 1

1

それを試してください:https://github.com/yaymukund/grunt-simple-mocha

次のレポーターのいずれかと一緒に: http://visionmedia.github.io/mocha/#reporters

またはこのようなもの: https://github.com/peerigon/xunit-file

しかし、真実は、サーバー側からうなり声を捨てて、Makefile を使用する必要があるということです!

ここに私が使用する古典的なものがあります:

MOCHA="node_modules/.bin/mocha"
_MOCHA="node_modules/.bin/_mocha"
JSHINT="node_modules/.bin/jshint"
ISTANBUL="node_modules/.bin/istanbul"

TESTS=$(shell find test/ -name "*.test.js")

clean:
    rm -rf reports

test:
    $(MOCHA) -R spec $(TESTS)

jshint:
    $(JSHINT) src test

coverage:
    @# check if reports folder exists, if not create it
    @test -d reports || mkdir reports
    $(ISTANBUL) cover --dir ./reports $(_MOCHA) -- -R spec $(TESTS)

.PHONY: clean test jshint coverage

それだけです。開発依存関係としてmocha、jshint、istanbulをインストールするだけで、準備完了です

これらのツールをグローバルにインストールするように言う人もいますが、それはあなた次第です

于 2013-10-14T21:45:42.790 に答える