任何人都可以拿出暗示理想的场景准则来选择嘲讽与伪造,即手动设置的要领?
我有点困惑与如何处理这种情况。
任何人都可以拿出暗示理想的场景准则来选择嘲讽与伪造,即手动设置的要领?
我有点困惑与如何处理这种情况。
那么你有你需要理清一些事情。 你有你需要知道的两个基本点:术语和最佳实践。
首先,我想给你从一个伟大的测试,罗伊Osherove一个伟大的视频资源:
单元测试评论罗伊Osherove
他说他已经做随几个开源项目的测试工具的一些评论开始了。 你可以找到那些在这里: http://weblogs.asp.net/rosherove/archive/tags/TestReview/default.aspx
这些基本上是视频的评论,在那里他将引导您完成这些测试工具,告诉你什么是好,什么是坏的。 很有帮助。
罗伊也有一本书,我的理解是非常好的。
命名法
该播客将有助于出极大 : http://www.hanselminutes.com/default.aspx?showID=187
我套用播客,虽然(即Hanselminutes介绍音乐是可怕的):
基本上你有隔离框架做(如起订量,犀牛嘲笑,模拟型等)都被称为是假的 。
一个假是一个测试,你正在测试的代码来代替的生产代码中调用过程中使用的对象。 一个假用来隔离你想从你的应用程序的其他部分进行测试的代码。
有(为主)两种类型的假货 : 存根和嘲笑 。
有模拟的是,你把到位,使正在测试的代码可以调用出来给它的假,你断言,电话是用正确的参数进行。 下面的示例不只是这一点使用起订量隔离框架:
[TestMethod] public void CalculateTax_ValidTaxRate_DALCallIsCorrect() { //Arrange Mock<ITaxRateDataAccess> taxDALMock = new Mock<ITaxRateDataAccess>(); taxDALMock.Setup(taxDAL => taxDAL.GetTaxRateForZipCode("75001")) .Returns(0.08).Verifiable(); TaxCalculator calc = new TaxCalculator(taxDALMock.Object); //Act decimal result = calc.CalculateTax("75001", 100.00); //Assert taxDALMock.VerifyAll(); }
存根是几乎相同的模拟,除非你把它在的地方,以确保您正在测试的代码从它的呼叫回来一致的数据(例如,如果你的代码调用数据访问层,存根将返回回假数据),但你不主张对抗存根本身。 也就是说,你不在乎,以验证该方法叫你的假数据访问层 - 你想测试别的东西。 您提供的存根让你试图隔离测试工作的方法。
下面是一个短的例子:
[TestMethod] public void CalculateTax_ValidTaxRate_TaxValueIsCorrect() { //Arrange Mock<ITaxRateDataAccess> taxDALStub = new Mock<ITaxRateDataAccess>(); taxDALStub.Setup(taxDAL => taxDAL.GetTaxRateForZipCode("75001")) .Returns(0.08); TaxCalculator calc = new TaxCalculator(taxDALStub.Object); //Act decimal result = calc.CalculateTax("75001", 100.00); //Assert Assert.AreEqual(result, 8.00); }
注意这里,我们正在测试的方法的输出,而不是事实的方法制造的另一资源的调用。
起订量并没有真正做一个模拟以及抽头之间的API的区别(注意两人都宣布为
Mock<T>
但这里的用法是在确定的类型非常重要。
希望这可以帮助你设置直。
有在真皮休闲5种不同的测试双打:假人,存根,嘲笑,间谍和假货。 一个很好的概述是http://code.google.com/testing/TotT-2008-06-12.pdf同时他们也归类于http://xunitpatterns.com/Mocks,%20Fakes,%20Stubs%20and% 20Dummies.html
要测试的代码块,右,让我们说的方法。 你的方法下载从HTTP URL文件,然后保存在磁盘上的文件,然后寄出该文件在磁盘上。 所有这三个动作当然是服务类的方法调用,因为那时他们很容易嘲笑。 如果你不嘲笑这些,你的测试将下载的东西,访问磁盘,并在每次运行测试时间的邮件消息。 然后,你不只是测试代码的方法,你也考验这个下载,写入磁盘并发送邮件的代码。 现在,如果你是嘲讽这些,你正在测试只是方法的代码。 你也能够模拟例如下载失败,就看你的方法的代码是正确的行为。
现在,作为伪造那些只是抱着值,并没有太多的逻辑,我通常假类。 如果您在拥有一些值,即获得该方法更改的对象发送,您可以在测试它的读出看到的方法做正确的事。
当然,规则可以(有时是必须)被弯曲了一下,但思维的一般方式是测试你的代码,只有你的代码。
小莫克 ,从鲍勃·马丁,是关于这一主题的非常良好的阅读。
[...]不久前一些非常聪明的人写了一篇论文介绍了和规定的期限内Mock对象。 其他人的大量阅读和使用这个词开始。 其他人,谁没有看报纸,听到这个词,并使用它与更广泛的含义开始。 他们甚至翻字变成个动词。 他们会说,“让我们嘲笑那个对象了。”,或者“我们已经得到了很多嘲讽做的。”
文章介绍了嘲弄,假货,spys和存根之间的差异。