1

SUnit、JUnit、および一般的な xUnit テスト フレームワーク以来、テストは長い道のりを歩んできました。

RSpecCucumberを調べて、「動作駆動型」テストとは何かを理解しましたが、今では、単体テストを作成するための他のどのようなアプローチが存在するのか疑問に思っています。

私は特定の言語に縛られているわけではありませんが、コードをテストするための一般的なアイデアとアプローチに関心があります。

したがって、私の質問は、ユニットテストに対してスタイル的に異なるアプローチ、つまり「アサート」とは異なるアプローチがあるということです。

例を挙げましょう:

単体テストの xUnit スタイルは、お好みの言語で大まかに次のようになります。

stack = new Stack()
assertTrue  (stack.empty())

stack.push(1)
assertFalse (stack.empty())
assertEquals(1, stack.top())

RSpec スタイルの単体テストは次のようになります (大まかに即興で):

describe Stack do

  it "should be empty" do
    Stack.new.empty?.should == true
  end

  it "should contain new value on top" do
    stack = Stack.new
    stack.push(1)
    stack.empty?.should == false
    stack.top().should == 1
  end
end

他に興味深いスタイル、表記法、「DSL」はありますか? 確かに、すべての言語とフレームワークにはテーマのバリエーションがありますが、一般的な「テーマ」/スタイルは異なりますか?

4

2 に答える 2

1

私は2つのスタイルのテストしか考えられません。コード中心(上記のコードで指定されたxUnitおよびRSpec)および動作中心(キュウリ、SpecFlow-Given / Then / When)。これで、コード中心のフレームワーク(コード#1)で動作スタイルのテストを実行できます。

また、次の3種類のテストがあります。

  • モキスト-ほとんどの依存関係は(厳密に)モックされています。
  • スタブリスト-ほとんどの依存関係はスタブされています。
  • 統合-ほとんどの依存関係は実際のものです。

コード#1:

@Test
public void theScenarioDescription() {
    givenThatSomething();
    whenIWiggleIt();
    thenSomethingHasHappened();
}
于 2012-07-24T16:07:28.680 に答える
0

個人的には、Given、When、Then 型のテスト用構文がとても気に入っています。

Given some particular situaion
When some action occurs
Then there will be an outcome that can be verified.

私は、.NET 上のStoryQSpecFlowなどのツールを使用して、このアプローチを開始しました。それ以来、私は自分自身のスタイルにより適した独自の小さなフレームワークを書き始めましたが 、まだ特に成熟していません。

于 2012-07-21T17:35:11.777 に答える