2009-04-30 11 views
5

これはかなり主観的ですが、私はテストと嘲笑について学んでいます。私はどのフレームワークを使うべきかを考えようとしています。あなたがお勧めしたものを教えてください。最も重要なのはなぜ他のものよりも優れているのですか?私はあなたに勧めます。または、誰かが私がどこで比較をすることができるかを知っていれば、それはまた役に立つだろう。最高のopensource Mockingフレームワークfor .netを探しています

+0

これらのフレームワークのどれがautomocking拡張機能を持っているか、たとえばAutoFacとAutoFixtureの両方がMoqをサポートしているかどうかを検討したい場合は、これらの両方が他のモックフレームワーク(Rhino、NS substituteなど)も同様です。パッケージマネージャーの中には、彼らの人気度や最近選択したときにどれだけ最近更新されたかを見てもよいでしょう。 – LightCC

答えて

3

私はRhinoMocksが好き、それは私が使用した唯一の一つだ:これは有望に見える}

http://code.google.com/p/mocking-frameworks-compare/

+0

あなたは特に好き嫌いがありますか? – Micah

+0

申し訳ありません、それ自体ではありません...覚えて始めるのはかなり簡単でした。開発者は非常に積極的であり、開発者コミュニティで尊敬されています。 – squillman

3

私もRhinoMocksを使用しています。私は特にAAA(Arrange-Act-Assert)パターンが好きです。 RhinoMocksは、このパターンを使用して期待値を設定して確認するのを簡単にします。この構文ではlambdaとchainingが使用されています。これはLINQとよく似ています。構文の類似性は理解に役立ち、コードをよりコンパクトにすることができます。私がそれを持っている唯一の問題であり、それは巨大ではない、メソッドを模擬するためには仮想である必要があるということです。ある意味では、これは良いことです。なぜなら、リファクタリングをインターフェイスに強制してしまうからです。しかし、インターフェイスが本当に必要ない場合は苦痛になることがあります。これは、いくつかのフレームワーククラスを模倣することをより困難にする可能性があります。これを回避するには、クラスメソッドをバーチャルにするかフレームワーククラスでマーキングするラッパーを作成します。私はこれらの問題がRhinoMocksに固有のものではないと思います。

+1

Moqはすべてが抽象的であるか、インタフェースを実装しているか、仮想メンバを持っていなければならないという点で同じ「制限」を持っています。 – TheMissingLINQ

0

http://www.nmock.org/

しかし、これは私が使用した唯一のものです。

+2

NMockの問題(少なくとも私が使ったときの問題)はすべてのメソッド名が文字列であることでした。つまり、インタフェースを変更したときにコンパイラの助けを得ることはできません。また、リファクタリングツールがテストを正常に変更しないことを意味します。インターフェイスとリファクタリングツールを変更すると、RhinoとMoqは少なくともコンパイルされません。 –

+0

公正なコメント - 他のものを見る時が来たと思う。 – Peanut

6

私はRhino.Mocks、Moq & NMockを使用しました。私はMoqを好んだ。

私は今NS substituteを使用しています...その構文がmoqのそれよりはるかに優れていることがわかりました。あなたは何かを犠牲にしないでください。

私はこのようなテストを書くために使用される:

[Test] 
public void SomeOtherTest() 
{ 
    //Arrange 
    var mock = new Mock<IFoo>(); 
    var sut = new SystemUnderTest(mock.Object); //never liked doing it this way... 
    mock.Setup(m => x.Bar()).Returns("A whole bunch of ceremonial syntax.."); 
    //Act 
    sut.DoSomething(); 
    //Assert 
    mock.Verify(m => m.Baz()); //Baaaaah, more laaaaambdas 
} 

今私は非ラムダerynessに浸る

[Test] 
public void NSubTest() 
{ 
    var mock = Substitute.For<IFoo>(); 
    var sut = new SystemUnderTest(mock); //much nicer! 
    mock.Bar().Returns("Look ma! No lambdas!"); 

    sut.DoSomething(); 

    mock.Received().Baz(); 
} 

その

... githubの上の...のための最終的なポイントを

http://nsubstitute.github.com/

関連する問題