单元测试 – 某些逻辑路径本身是不可测试的吗?

我一直在使用TDD来推动我目前正在进行的项目,结果相当令人满意.我确实遇到了一个问题(描述 here;仍然没有解决方案或任何建议!),其中某些特定方法的某些方面可能无法进行测试(如 my example;简而言之,我希望能够处理一个具有特定ErrorCode的ManagementException – 但我似乎不可能设置一个抛出类似ManagementException的测试.

那么,如何应对呢?我们是否只是接受这样一个事实,即某些逻辑路径是不可测试的(因为我们正在使用的框架或当前可用的测试框架中的限制)?

解决方法

有些设计不适用于可测试性,尤其是那些没有可测试性作为设计目标之一的设计.通常TDDed设计不属于这一类.

为了回答您的原始问题,我发布了一个响应,其中涉及使用反射来插入请求的错误代码.但是,这可能并不适用于所有情况,也不是一般解决方案.

这里的权衡是编写测试的努力与在自动化测试下使用特定代码片段的好处.如果您认为成本效益比很大且失败的可能性微乎其微,您可以将其作为特殊的手动测试,对未来的开发人员进行评论并立即手动验证.我说要务实,如果你花了30-40分钟开发人员的大脑时间试图让它受到考验,也许你需要退后一步并重新考虑你的策略.看看Michael Feather的“有效地使用遗留代码”,就克服可测试性障碍的一些建议.

相关文章

什么是设计模式一套被反复使用、多数人知晓的、经过分类编目...
单一职责原则定义(Single Responsibility Principle,SRP)...
动态代理和CGLib代理分不清吗,看看这篇文章,写的非常好,强...
适配器模式将一个类的接口转换成客户期望的另一个接口,使得...
策略模式定义了一系列算法族,并封装在类中,它们之间可以互...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,...