This question about unit tests引发了另一件困扰着我的事情。我有三种方式来回敲击数据库时进行单元测试。单元测试和数据库
- 创建模拟对象并将它们插入。这具有不需要数据库的优点,但这很耗时,而且我不确定我得到的投资有多少回报。我一直在进入国际奥委会和moq一点点,但它似乎仍然很痛苦。
- 创建一个setup和teardown数据库脚本来创建已知的案例,并对这些案例进行测试。再次,可以是时间密集型的,但大多数时候仍然比模拟对象更容易创建。而其他人在工作时仍然可以运行它,假设他们在本地主机上有SQL服务器。
- 手动检查开发数据库并修改单元测试。大量手动工作,但如果我有一个“测试集”不改变,它似乎工作正常。在我的机器上,至少:-)。
我知道选项1是“正确”的方式做单元测试,而是三个,这可能是我用的最少的(尽管最新的项目已经与国际奥委会的选项,使门对我开放)。我意识到这很大程度上取决于究竟是什么被嘲笑和什么被测试,但我在这里错过了什么?
如果上下文有帮助,我在C#商店,编写内部应用程序,只有少数开发人员。
技术#3(自动执行SUT,但手动验证结果)对于测试不能自动验证的事情很有用,如UI的外观和外观,HTML在不同浏览器中的外观或确保你的游戏具有良好的图形。但是,对于数据库,我认为您将花更少的时间来使用前两种技术进行全面测试。 – apollodude217 2010-06-26 14:35:47
这不是一个dup吗? http://stackoverflow.com/questions/3111645/mock-objects-vs-test-database – 2010-06-26 15:45:33