2009-04-30 66 views
5

我知道這是相當主觀的,但我潛入測試和學習嘲笑,我試圖找出我應該使用哪個框架。如果你可以請告訴我哪些是你推薦的,而且最重要的是爲什麼它比你用過的其他人好我會推薦你​​的。或者,如果有人知道我可以在哪裏進行並排比較,那將會有所幫助。尋找最好的開源Mocking框架.net

+0

對於那些仍然運行這個 - 也可能要考慮哪些這些框架具有automocking擴展 - 例如,AutoFac和AutoFixture都支持Moq,我相信這兩個都支持其他一些嘲諷框架(Rhino,NSubstitute等)。花一些時間在包管理器中查看它們的流行程度以及最近在做出選擇時最近更新的時間。 – LightCC 2017-09-03 02:12:42

回答

3

我喜歡RhinoMocks,但它是我使用的唯一一個:}

這看起來很有希望: http://code.google.com/p/mocking-frameworks-compare/

+0

你有什麼特別的喜歡/不喜歡? – Micah 2009-04-30 16:00:04

+0

對不起,不是本身......這很容易學習和開始。開發人員非常活躍,在開發社區中備受尊重。 – squillman 2009-04-30 16:12:22

3

我還使用RhinoMocks。我特別喜歡AAA(Arrange-Act-Assert)模式。 RhinoMocks可以輕鬆設置期望並使用此模式檢查它們。該語法使用lambdas和鏈接,非常適合LINQ。語法上的相似性有助於理解並允許代碼更緊湊。我對它的唯一問題,並不是很大,是爲了嘲笑一個方法,它需要是虛擬的。從某種意義上講,這很好,因爲它「迫使」你重構接口,但如果接口不是真的需要,這可能會很痛苦。它可以讓一些框架類變得更加困難。你可以通過將你的類方法標記爲虛擬的方式來解決這個問題,或者用框架類來創建一個你模擬的包裝器。我不認爲這些問題是RhinoMocks獨有的。

+1

他們不是,Moq具有相同的「限制」,因爲一切都必須是抽象的,實現一個接口或具有虛擬成員。 – TheMissingLINQ 2009-04-30 16:30:15

6

我已經使用Rhino.Mocks,Moq & NMock。我過去比較喜歡Moq。

我現在使用NSubstitute ...並且發現它的語法遠遠優於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/