4

ストーリーを非常に柔軟に定義できる Javascript BDD ツール Jasmine が気に入っています。Jasmine のストーリーは、前のストーリーに依存するストーリーの前に前提条件のストーリーが実行されるように構成できます。これにより、テスト コードの再利用性と可読性が向上します。

コードの再利用の例:

describe("parent story", function() {
  var a = 1;
  beforeEach(function(){
    a++;
  });

  it("should equal to 2", function() {
    expect(a).toBe(2);
  });

  describe("child story"), function(){
    beforeEach(function(){
      a++;
    });

    it("should equal to 3", function(){
      expect(a).toBe(3);
    });
  });
});

Java の世界でこの概念を使用する方法について調査したところ、Java で最も人気のある BDD は JBehave であることがわかりました。ただし、Jasmine は以前のストーリーのテスト コードを子ストーリーに再利用するという点で、それほど柔軟ではないようです。Jasmine の例のように、再利用された変数を親ストーリーから子ストーリーに渡す方法がわかりませんでした。

JBehave には、GivenStories の概念が他のものより先に実行されますが、GivenStories で作成された状態を、GivenStories に依存するものに渡す方法がわかりませんでした。

JBehave は Jasmine と同じようにこの作業を行うことができますか? そうでない場合、同じことを実行できる Java の別の BDD フレームワークはありますか?

4

1 に答える 1

1

JBehave と Jasmine はそれほど似ていません。Jasmine は rspec に非常に似ています。JBehave と Cucumber (別の BDD フレームワークで、もっと人気があると思います) は、Jasmine や rspec よりも互いに似ています。

JBehave には Jasmine のネストされたコンテキストはありませんが、ステップ間で状態を確実に渡すことができます。http://jbehave.org/を見てください: 状態は Steps クラスのインスタンス変数で渡されます。Cucumber も同様に動作しますが、少なくとも Ruby バージョン (私は Java Cucumber に精通していません) はより柔軟であり、その状態では、Cucumber World のインスタンス変数として任意のステップから他のステップに渡すことができます。

ただし、注意してください。これらすべてのフレームワークで、状態共有は複数のステップからテストを構築できるようにするためのものであり、テストが相互に依存することを許可するためのものではありません。テストはコードを共有できますが、あるテストが成功するか失敗するかは、別のテストが成功するか失敗するかから完全に独立している必要があります。何かをアサートすると、もうセットアップ コードではなく、テストしているので、別のテストで状態を再利用するべきではありません。

于 2014-05-03T05:53:23.493 に答える