vij*_*ter 50 .net c# tdd unit-testing
任何人都可以提出建议选择嘲讽与假装的理想方案,即手动设置要领吗?
我对如何处理这种情况有点困惑.
And*_*mes 83
那么你需要解决一些问题.您需要了解两件基本事项:命名法和最佳实践.
首先,我想给一个伟大的测试人员Roy Osherove提供一个很棒的视频资源:
Roy Osherove的单元测试评论
他首先说他已经对几个开源项目附带的测试工具进行了一些评论.你可以在这里找到:http: //weblogs.asp.net/rosherove/archive/tags/TestReview/default.aspx
这些基本上是视频评论,他带您了解这些测试工具,并告诉您什么是好的,什么是坏的.很有帮助.
罗伊还有一本我理解的书非常好.
命名法
这个播客将有很大帮助 :http://www.hanselminutes.com/default.aspx?showID = 187
我会解释这个播客(Hanselminutes介绍音乐是可怕的):
基本上你用隔离框架做的一切 (如Moq,Rhino Mocks,Type Mock等)都被称为 假的.
一个假冒是一个测试,你正在测试的代码来代替的生产代码中调用过程中使用的对象.伪造用于隔离您尝试从应用程序的其他部分测试的代码.
(主要)有两种类型的假货:存根 和模拟.
一个模拟的是,你把到位,使正在测试的代码可以调用出来给它的假,你断言,电话是用正确的参数进行.以下示例使用Moq隔离框架执行此操作:
Run Code Online (Sandbox Code Playgroud)[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(); }一个存根几乎是相同的模拟,除非你把它在的地方,以确保您正在测试的代码从它的呼叫回来一致的数据(例如,如果你的代码调用数据访问层,存根将返回回假数据),但你没有断言存根本身.也就是说,您无需验证该方法是否为您的假数据访问层 - 您正在尝试测试其他内容.您提供存根以获取您尝试测试的方法以单独工作.
这是一个存根示例:
Run Code Online (Sandbox Code Playgroud)[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); }请注意,我们正在测试方法的输出,而不是该方法调用另一个资源的事实.
Moq并没有真正在模拟和存根之间进行API区分(通知都被声明为
Mock<T>),但这里的用法在确定类型时很重要.
希望这有助于让你顺利.
Esk*_*ola 17
有5种不同的测试双打:假人,存根,嘲笑,间谍和假货.一个很好的概述在http://code.google.com/testing/TotT-2008-06-12.pdf,它们也分类在http://xunitpatterns.com/Mocks,%20Fakes,%20Stubs%20and% 20Dummies.html
| 归档时间: |
|
| 查看次数: |
14940 次 |
| 最近记录: |