2012-01-04 79 views
5

讀過關於痣的好東西我想爲我們的編寫單元測試工具集增加一個隔離框架。用於測試單聲道的隔離框架

我們的應用程序在Mono下運行,因爲它被部署在Linux和Windows上,我似乎無法找到支持Mono的框架。

我見過一些關於使用Cecil操作程序集的文章,但我正在努力尋找任何我們可以實際使用的東西。

回答

4

Moles看起來像使用JIT,所以我期望它與微軟的實現非常緊密聯繫。

我在單聲道上使用Moq獲得了極大的成功,只需很少的努力就可以創建幾乎任何類的代理實例,並攔截幾乎所有的方法調用。 Moq的latest binary version在單聲道上對我很好。

using Moq; 

var mock = new Mock<MyClass> { CallBase = true }; 
mock.Setup(x => x.MyMethod()).Returns (1); 

使用Moq來設置東西后,我通常更喜歡使用NUnit,但可以使用任何其他測試框架。

+0

感謝您的輸入,Ian。是的,我甚至沒有試圖用Mono來看待Moles,因爲我認爲它會失敗。 我們已經在使用Moq,我認爲這很棒,但我正在尋找能夠應付DateTime.Now類型問題的工具。我完全知道我可以將靜態方法包裝在代理類中的實例方法後面,但我不確定它是否是所有場景中最優雅的解決方案。 – sebjsmith 2012-01-05 20:29:58

+0

哦,靜態方法攔截..這是棘手的 – IanNorton 2012-01-05 20:38:25

+0

你看過使用PostSharp添加前/後鉤子到你的方法? – IanNorton 2012-01-05 20:57:50

0

TypeMock很可能是您在對@IanNorton答案的評論中添加的唯一選擇。

+1

我不相信TypeMock支持單聲道。 – sebjsmith 2012-01-05 21:01:40

+0

如果TypeMock在Mono上不起作用,那麼您可能絕對沒有其他選擇比代理類。 – 2012-01-06 13:17:28