7

バックボーンアプリを作成していますが、自動テストが必要です。自動テストにはセレンを使用したくない。

JasmineとCucumber.jsを調べています。Jasmineの方が良いと思いますが、私が働いている会社では、サーバー側のテストにキュウリを使用しており、cucumber.jsを本番環境に使用できるかどうかを調査しています。

助言がありますか?

4

3 に答える 3

11

Cucumber.jsは非常に安定しており、本番環境で使用する準備ができています。ただし、シナリオのアウトラインや(現在利用可能な)変換など、Cucumberrubyと比較していくつかの高度な機能が欠けています。開発ステータステーブルについては、 READMEを参照してください。

Zombie.js、Phantom.js、Seleniumで使用でき、ブラウザー内でも使用できます。事実上、Cucumberステップ定義内で任意のアサーション/テストライブラリを使用できます。

Andreasが指摘したように、Jasmineは単体テスト/仕様を対象としていますが、Cucumberは(アプリケーションスタック全体をヒットする)受け入れテストツールです。

Cucumber.jsの使用を開始する際にサポートが必要な場合は、遠慮なく私にpingしてください(Twitterの@ jbpros、Freenode /#cucumberのjbpros)。

于 2012-04-09T09:13:49.583 に答える
2

@jbprosの回答にコメントを追加するのに十分なポイントがありませんが、ここで説明したように、シナリオの概要がcucumber.jsで完成していることに注意してください

例えば:

世界:

// features/support/world.js

var zombie = require('zombie');
var World = function World(callback) {
  this.browser = new zombie(); // this.browser will be available in step definitions

  this.visit = function(url, callback) {
    this.browser.visit(url, callback);
  };

  callback(); // tell Cucumber we're finished and to use 'this' as the world instance
};
exports.World = World;

特徴:

Scenario Outline: eating
  Given there are <start> cucumbers
  When I eat <eat> cucumbers
  Then I should have <left> cucumbers

Examples:
    | start | eat | left |
    |  12   |  5  |  7   |
    |  20   |  5  |  15  |
    |  200  |  65 |  135 |
    |  200  |  5  |  194 |

ステップの定義:

var aTest = function () {
this.World = require("../support/world.js").World;

this.start = 0;
this.eat = 0;

this.Given(/^there are (\d+) cucumbers$/, function(number, next) {
    this.start = parseInt(number);
     callback();
});

this.When(/^I eat (\d+) cucumbers$/, function (number, next) {
    this.eat = parseInt(number);
     callback();
});

this.Then(/^I should have (\d+) cucumbers$/, function (number, next) {
    var left = this.start - this.eat; 
    if ( left != number)
        callback.fail(new Error("This test didn't pass, I started with: " + this.start 
            + ", ate: " + this.eat 
            + " and was left with: " + left 
            + ". Expected: " + number));
     callback();
    });
};

module.exports = aTest;
于 2014-05-08T03:28:24.867 に答える
0

busterjsjstestdriverはどちらも、 テストページをホストする独自のサーバーを起動できます。ブラウザを自動的に起動してテストページを開くだけです。テストはブラウザで実行され、結果をサーバーに報告します。サーバーでは、Mavenで読み取り可能な形式で保存できます。Jasmine用のMavenプラグインもあることに注意してください

于 2012-04-05T10:25:02.897 に答える