6

CucumberJS を使用して NodeJS Web アプリでテストを実行しています。

現時点では、 を実行することですべての面倒なタスクを実行することgruntも、 を使用して CucumberJS タスクのみを実行することもできますgrunt cucumberjs

しかし、今は特定の機能だけを実行したいと考えています。

たとえば、次の機能ファイルがあるとします。

  • Signin.feature
  • お気に入り機能

次のようなコマンドを使用して、お気に入りの機能テストのみを実行したい:

grunt cucumberjs Favourite

これは可能ですか?


ところで、これが私のものgruntfile.jsです:

'use strict';

module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        ...
        cucumberjs: {
            src: 'features',
            options: {
                steps: 'features/step_definitions',
                format: 'pretty'
            }
        }
    });

    ...
    grunt.loadNpmTasks('grunt-cucumber');

    grunt.registerTask('default', [... 'cucumberjs']);
};
4

3 に答える 3

6

tagsに基づいて、十分に機能すると思われる解決策を最終的に見つけました。

そのため、機能ファイルごとにタグを追加しました。

たとえば、Favourite.feature の場合:

@favourite
Feature: Favourite
    As a user of the system
    I would like to favourite items

次に、GruntJS オプションを使用して、実行するタグをコマンドライン引数で指定しました。

これgrunt.option()は、gruntfile の呼び出しで行います。

cucumberjs: {
    src: 'features',
    options: {
        steps: 'features/step_definitions',
        format: 'pretty',
        tags: grunt.option('cucumbertags')
    }
}

これで、次のようにコマンドラインから GruntJS を実行できます。

grunt cucumberjs --cucumbertags=@favourite

また、@favourite タグが付いた機能のみが実行されます。わーい!

于 2014-02-04T05:21:16.243 に答える
0

grunt でテストしたことはありませんが、cucumber には gherkin ファイルを変更せずにシナリオを実行するオプションがあります。を呼び出すだけcucumber-js --name "Scenario Name"です。したがって、同じ引数を grant に送信すると、その仕事が行われると想定しています。

于 2020-03-13T20:21:53.850 に答える