C# 我真的必须以不同的方式编写代码,以便测试它吗?

C# 我真的必须以不同的方式编写代码,以便测试它吗?,c#,mocking,moq,rhino-mocks-3.5,C#,Mocking,Moq,Rhino Mocks 3.5,我是从RubyonRails来到c#的,在那里我使用Rspec和Mocha进行了TDD。我想进入一个模拟框架,一个旧的stackoverflow帖子把我指向了MOQ和rhino模拟的方向。我对这两个问题都犹豫不决,我正在寻求一些建议或澄清,或者只是一次打气的谈话 以下是我关注的问题: 犀牛模仿似乎有点过时了。许多示例甚至没有使用泛型,因为在创建框架时它们似乎不可用 Moq似乎不如Rhino mock强大,您需要调整类以模拟它们(要么它们必须实现接口,要么所有方法都必须是虚拟的) 我是不是离基

我是从RubyonRails来到c#的,在那里我使用Rspec和Mocha进行了TDD。我想进入一个模拟框架,一个旧的stackoverflow帖子把我指向了MOQ和rhino模拟的方向。我对这两个问题都犹豫不决,我正在寻求一些建议或澄清,或者只是一次打气的谈话

以下是我关注的问题:

  • 犀牛模仿似乎有点过时了。许多示例甚至没有使用泛型,因为在创建框架时它们似乎不可用

  • Moq似乎不如Rhino mock强大,您需要调整类以模拟它们(要么它们必须实现接口,要么所有方法都必须是虚拟的)
我是不是离基地太远了?我错过什么了吗?是否有一些很酷的新框架我应该知道,还是我只需要敞开心扉,接受模仿对于静态语言来说是不一样的


(我知道过去有人问过类似的问题,但对我来说,这些问题似乎有点过时,我对最新流行的新事物很感兴趣)

我个人投票支持moq,但mocking框架的选择实际上取决于你。我还认为,可测试性是编写不同代码的充分理由。一般来说,接口很难过度使用,从长远来看,它们可能会使代码更易于维护。

我个人投票支持moq,但mocking框架的选择实际上取决于您。我还认为,可测试性是编写不同代码的充分理由。一般来说,接口很难过度使用,从长远来看,它们可能会使代码更易于维护。

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

到犀牛/莫克

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

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


好消息是,我认为你正在寻找最好的两个,并试图在它们之间做出选择。我不认为您会后悔选择这两种方式。

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

到犀牛/莫克

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

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


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

“似乎您需要调整类以模拟它们”——从相反的角度看,无论您是否测试代码,它们都应该这样编写。接口和小型类(与上帝类相反)使您的代码不那么耦合。“似乎您需要调整类以模拟它们”——从相反的大小看,无论您是否测试代码,它们都应该这样编写。接口和小型类(与上帝类相反)使您的代码不那么耦合。“我还认为可测试性是以不同方式编写代码的充分理由”好的观点,谢谢“我还认为可测试性是以不同方式编写代码的充分理由”好的观点,谢谢