Questions tagged «tdd»

测试驱动开发(TDD)涉及编写失败的自动化测试以指定要构建的内容。然后通过编写满足测试条件的代码使测试通过。最后,代码被重构。

9
如何在Jasmine中测试值“大于或等于”?
我想确认一个值是一个十进制(或0),因此该数字应大于或等于零且小于1。 describe('percent',function(){ it('should be a decimal', function() { var percent = insights.percent; expect(percent).toBeGreaterThan(0); expect(percent).toBeLessThan(1); }); }); 我如何模仿“> = 0”?

17
您如何对单元测试进行单元测试?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我正在MVCStoreFront应用程序上观看Rob Connerys的网络广播,我注意到他正在对甚至是最平凡的东西进行单元测试,例如: public Decimal DiscountPrice { get { return this.Price - this.Discount; } } 将进行如下测试: [TestMethod] public void Test_DiscountPrice { Product p = new Product(); p.Price = 100; p.Discount = 20; Assert.IsEqual(p.DiscountPrice,80); } 尽管我全都用于单元测试,但有时我想知道这种形式的测试优先开发是否真的有用,例如,在实际过程中,您的代码上方有3-4层(业务请求,需求文档,体系结构文档) ,可能会误定义实际定义的业务规则(折扣价为价格-折扣)。 如果是这种情况,您的单元测试对您没有任何意义。 此外,单元测试是另一个失败点: [TestMethod] public void Test_DiscountPrice { Product p = new …
89 tdd  agile  test-first 

17
您的单元测试有多深?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我发现的有关TDD的事情是,它需要花费一些时间来设置您的测试,并且自然而然地变得懒惰,我一直想编写尽可能少的代码。我似乎要做的第一件事是测试我的构造函数是否设置了所有属性,但是这太过分了吗? 我的问题是编写单元测试的粒度级别是多少? ..是否有太多测试案例?
88 unit-testing  tdd 

7
使用C#和RhinoMocks进行测试驱动开发的最佳实践
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 为了帮助我的团队编写可测试的代码,我提出了一些简单的最佳实践,以使我们的C#代码库更可测试。(有些观点涉及C#模拟框架Rhino Mocks的局限性,但这些规则也可能更普遍地适用。)是否有人遵循任何最佳实践? 为了最大化代码的可测试性,请遵循以下规则: 首先编写测试,然后编写代码。原因:这样可确保您编写可测试的代码,并确保每一行代码都可以为其编写测试。 使用依赖注入设计类。原因:您不能嘲笑或测试看不见的东西。 使用Model-View-Controller或Model-View-Presenter将UI代码与其行为分开。原因:允许在最小化无法测试的部分(UI)的同时测试业务逻辑。 不要编写静态方法或类。 原因:静态方法很难或不可能隔离,Rhino Mocks无法模拟它们。 编程关闭接口,而不是类。原因:使用接口可以阐明对象之间的关系。接口应定义对象从其环境中需要的服务。同样,可以使用Rhino Mocks和其他模拟框架轻松模拟接口。 隔离外部依赖项。原因:无法测试未解决的外部依赖关系。 将要模拟的方法标记为虚拟。原因:Rhino Mocks无法模拟非虚拟方法。


12
私有/受保护的方法是否应该接受单元测试?
在TDD开发中,通常要做的第一件事是创建接口,然后开始针对该接口编写单元测试。随着TDD过程的进行,您最终将创建一个实现该接口的类,然后在某个时候您的单元测试将通过。 现在,我的问题是关于私有和受保护的方法,我可能必须在类中编写这些方法以支持接口公开的方法/属性: 类中的私有方法是否应该具有自己的单元测试? 类中的受保护方法是否应具有自己的单元测试? 我的想法: 特别是因为我正在对接口进行编码,所以我不必担心受保护/私有方法,因为它们是黑盒。 因为我使用的是接口,所以我正在编写单元测试以验证所定义的约定是否由实现该接口的不同类正确实现,因此我也不必担心私有/受保护的方法,而应该通过调用接口定义的方法/属性。 如果我的代码覆盖率未显示出受保护的/私有方法被击中,则我没有正确的单元测试,或者我的代码未被使用,应删除。
82 unit-testing  tdd 

5
如何起订索引财产
我正在尝试模拟对索引属性的调用。即,我想起以下几点: object result = myDictionaryCollection["SomeKeyValue"]; 还有二传手的价值 myDictionaryCollection["SomeKeyValue"] = myNewValue; 我这样做是因为我需要模拟应用程序使用的类的功能。 有谁知道如何用起订量做到这一点?我尝试了以下方面的变体: Dictionary<string, object> MyContainer = new Dictionary<string, object>(); mock.ExpectGet<object>( p => p[It.IsAny<string>()]).Returns(MyContainer[(string s)]); 但这不能编译。 最小起订量是我想要实现的目标吗,有人能举例说明吗?
81 c#  tdd  mocking  moq 

8
我如何模拟没有接口的类?
我正在Windows 7中使用C#在.NET 4.0上工作。 我想使用模拟测试某些方法之间的通信。唯一的问题是我想在不实现接口的情况下做到这一点。那可能吗? 我刚刚阅读了很多关于模拟对象的主题和一些教程,但是它们全部都用于模拟接口,而不是类。我尝试使用Rhino和Moq框架。
81 c#  mocking  tdd 

2
开玩笑:第三方库使用控制台时如何模拟控制台?
我正在尝试模拟console.warn / error,但我不能。我使用了一个第三方库,该库在其中调用console.warn。我需要测试它是否被调用。在我的测试用例中,我试图对console.warn进行存根处理,但这没有帮助。之后,我尝试手动模拟控制台,但也没有解决。 console.warn = jest.fn(); testSchema('/app/components/Users/UserItem/UserItemContainer.js'); expect(console.warn).toBeCalled(); 没用 console.warn = jest.fn(); testSchema('/app/components/Users/UserItem/UserItemContainer.js'); console.warn('error'); expect(console.warn).toBeCalled(); 做过。但是我仍然console.warn node_modules/babel-relay-plugin/lib/getBabelRelayPlugin.js:138在终端中看到。谁能帮我?

7
程序员说“针对接口而不是对象的代码”是什么意思?
我已经开始了漫长而艰巨的学习和追求 应用TDD到我的工作流程。我觉得TDD非常符合IoC原则。 在SO中浏览了一些TDD标签的问题之后,我读到对接口(而不是对象)进行编程是一个好主意。 您能否提供简单的代码示例,以及如何在实际用例中应用它?简单的示例对我(以及其他想学习的人)来说是理解概念的关键。

12
关于MVC验证的单元测试
在MVC 2 Preview 1中使用DataAnnotation验证时,如何在验证实体时测试控制器操作是否将正确的错误放入ModelState中? 一些代码来说明。一,动作: [HttpPost] public ActionResult Index(BlogPost b) { if(ModelState.IsValid) { _blogService.Insert(b); return(View("Success", b)); } return View(b); } 这是一个失败的单元测试,我认为应该通过但不能(使用MbUnit和Moq): [Test] public void When_processing_invalid_post_HomeControllerModelState_should_have_at_least_one_error() { // arrange var mockRepository = new Mock<IBlogPostSVC>(); var homeController = new HomeController(mockRepository.Object); // act var p = new BlogPost { Title = "test" }; …

8
NSURL到带有XCTest的测试包中的文件路径
我正在尝试使用TDD和新的XCTest框架编写iOS应用。我的方法之一是从Internet检索文件(使用NSURL对象)并将其存储在用户的文档中。该方法的签名类似于: - (void) fetchAndStoreImage:(NSURL *)imageUrl 我正在尝试为此方法编写测试,以确保在没有互联网连接的情况下它不会失败。我的方法(来自上一个问题)是使用NSURL调用该方法来对本地文件系统中的图像进行调用。 当创建一个启用了单元测试的新项目时,Tests目录具有一个名为“ Supporting Files”的子目录。我想这就是我的测试图像所在的位置。我的问题是如何获取指向该目录中图像的NSURL对象,因为我不希望将测试图像与应用程序捆绑在一起。任何帮助表示赞赏。
77 ios  tdd  nsbundle  xctest 



3
GoogleTest与CppUnit:事实
在接下来的几年中设置C ++单元测试框架的过程中,我们选择了GoogleTest和CppUnit。我对两者都有一定的经验,我的首选是GoogleTest。无论如何说服我的老板我需要一些事实,所以我在互联网上做了一些阅读,包括手册,维基页面和一些资源。我想出了GoogleTest优势和一个CppUnit优势(图形测试运行程序)的列表。在这里,它们按感知的有用性排序: INSTANTIATE_TEST_CASE_P用您想要的任何参数集(包括笛卡尔乘积)实例化测试用例 FRIEND_TEST,用于测试私有类成员(适用于所有旧版代码) 将断言变成断点 非致命断言 “开箱即用” googlemock集成 自动测试检测,无需枚举 可以禁用和启用测试 可以使用名称模式选择要运行的测试 值/类型参数化测试 用户定义的谓词断言 死亡测试 更加丰富的断言 类型断言 在子程序上断言 可以使用<<将其他调试信息添加到断言中 RecordProperty向XML输出发出属性的最后一个值 SCOPED_TRACE帮助理解断言失败的上下文,该断言来自子例程或循环内部。 Jenkins可以立即显示xUnit XML输出,而无需在两者之间进行XSLT转换 支持自定义类型的打印机 测试指示所消耗的时间(我怀疑这对于CppUnit也可行,但我还没有弄清楚) 测试事件侦听器API(用户定义的插件) 测试改组 没有例外,RTTI 我假设CppUnit不支持以上所有内容是否正确?是否有一个有用的功能GoogleTest无法在CppUnit的我失踪? 最后但并非最不重要的一点:GoogleTest是否缺少任何出色的CppUnit功能? 谢谢!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.