c# – 单元测试是否使Debug.Assert()不必要?
已经有一段时间我已经准备好麦康奈尔的“
Code Complete”了.现在我在Hunt&托马斯“
The Pragmatic Programmer”:使用断言!注意:不是单元测试断言,我的意思是Debug.Assert().
根据SO的问题When should I use Debug.Assert()?和When to use assertion over exceptions in domain classes断言对开发很有用,因为“不可能”的情况可以很快发现.它似乎是常用的.据了解断言,在C#中,它们经常用于检查“不可能”值的输入变量. 为了尽可能保持单元测试的简洁和隔离,我使用null和“不可能”的虚拟输入(像空字符串)进行类和方法的提供. 这些测试是明确记录的,它们不依赖于某些具体的输入.注意:我正在练习Meszaros的“xUnit测试模式”描述为Minimal Fixture. 这就是这样的一点:如果我有一个断言来保护这些投入,他们会炸毁我的单位测试. 我喜欢断言编??程的想法,但另一方面,我不需要强制它.目前我无法想到Debug.Assert()的任何用途.也许有我想念的东西?你有什么建议,他们真的有用吗?也许我只是高估了断言的有用性?或者也许我的测试方式需要重新审视? 编辑:Best practice for debug Asserts during Unit testing是非常相似的,但它并没有回答这困扰我的问题:我应该关心Debug.Assert()在C#如果我测试像我已经描述了?如果是,在哪种情况下他们真的有用吗?在我目前的观点中,单元测试会使Debug.Assert()不必要. 另一点:如果你真的认为这是一个重复的问题,只是发表一些评论. 解决方法
在理论上,你是正确的 – 详尽的测试使得断言是多余的.理论上.在parctice中,它们仍然可用于调试测试,以及捕获未来开发人员尝试尝试使用接口而不是根据其预期语义的尝试.
简而言之,它们仅仅用于单元测试的不同目的.他们在那里抓到错误,在写单元测试时,它们本质上不会被做出. 我建议保留它们,因为它们提供了程序员错误的另一个级别的保护. 它们也是本地的错误保护机制,而单元测试则在被测代码的外部.在压力下“无意间”禁用单元测试比在一段代码中禁用所有断言和运行时检查更容易. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |