我是否真的必须以不同的方式编写代码,以便我可以测试它?

时间:2011-09-23 06:50:07

标签: c# mocking moq rhino-mocks-3.5

我要从轨道上的ruby来到c#,我使用Rspec和Mocha进行TDD。我本来想进入一个模拟框架,一个旧的stackoverflow帖子指向我的MOQ和犀牛嘲笑的方向。我不愿意承诺,我正在寻找一些建议或澄清,或者只是一个鼓舞人心的谈话......

以下是我的担忧:

  • 犀牛嘲笑似乎有些过时了。许多例子甚至没有使用泛型,因为在创建框架时它们似乎不可用
  • Moq似乎没有Rhino模拟强大,看起来你需要调整你的类来模拟它们(要么它们必须实现一个接口,要么所有方法都必须是虚拟的)

我离开基地吗?我错过了什么吗?是否有一些我应该知道的很酷的新框架,或者我只是需要敞开心扉并接受静态语言的嘲弄是不一样的?

(我知道过去有人问过这样的问题,但是对我来说它们似乎有点过时了,我对最新的崭新事物感兴趣)

2 个答案:

答案 0 :(得分:3)

我个人投票支持moq,但选择模拟框架真的取决于你。我还认为可测试性足以让您以不同的方式编写代码。接口通常很难过度使用,从长远来看,它们可能使您的代码更易于维护。

答案 1 :(得分:3)

测试驱动开发没有让您以不同方式编写代码的副作用。它实际上是为了让你以不同的方式编写代码。我们认为您在测试时更好地编写代码。您更有可能隐藏接口背后的代码,这是一件好事。希望能以不同的方式让你做很多事情!

到Rhino / Moq ......

Rhino Mocks自首次编写以来已经收到了一些改革,您不再需要使用记录/重放语法,您可以使用Arrange-Act-Assert语法,并且没有神奇的字符串可供使用。

Rhino Mocks - Arrange Act Assert Syntax

在Moq中,您可以模拟接口和类。语法更简单,更具表现力。

好消息是,我认为你正在寻找最好的两个,并试图在它们之间做出选择。我认为你不会后悔选择其中任何一个。