已经有一段时间我已经准备好麦康奈尔的“
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()不必要.
另一点:如果你真的认为这是一个重复的问题,只是发表一些评论.