我对单元测试很陌生,所以请原谅一个天真的问题。如果单元测试方法的圈复杂度为1,如果它们是较大交互作用的一部分,我应该测试它吗?
我听说过没有测试具有1的圈复杂度的任何东西的想法。这对我很有趣b/c我在事件之间做了很多交互测试。例如,按下按钮,触发事件,在演示者上引发事件,演示者修改模型,演示者在视图上调用方法。所以我测试以确保当按钮事件发生时,调用视图上正确的方法。
此序列中的每种方法的环复杂度为1.没有分支。但如果我想测试它作为一个“系统”(即视图,演示者,模型),圈复杂度更高 - 将事件序列中的所有1值方法相加。
所以我的问题是,当人们建议我不需要测试具有1的圈复杂度的方法时,他们是不是在讨论用于测试类之间交互的交互测试,就像我上面所描述的那样?
我本周两次遇到这个想法 - 一次在Mark Seemann Pluralsight视频中,一次在这里:http://webquali.com/blog/67/15-ways-to-write-beautiful-code.html。
虽然它可能是有趣的讨论,我不认为它适合SO格式。 – Lanorkin
这是比较教条式的(因为它主要是基于观点的,所以对于StackOverflow而言是偏离主题的)。也就是说,如果您无法看到针对方法本身的测试值,那么通常表示a)集成测试更有用的区域,或者b)您应该对堆栈中的一个或两个方法进行“单元测试”如果可以在没有外部依赖的情况下进行完全封装,则不会成为真正的集成测试。 –
至于问题考虑例如有1作为圈复杂度的方法'int Multiply(int a,int b){return a - b; }' - 这显然是错误的 - 为什么你不测试它?我认为你不应该从“现在它是简单的方法 - 我不会测试它”,而是从“我应该测试方法合同无论如何不管它有什么身体” – Lanorkin