单元测试 - 定理
Unit Testing - Theorem
所以,我看过一个关于 TDD 的视频,主持人说,你应该只对 class 的部分进行单元测试,即为外部世界提供一些东西。他提到这很好,因为这种方法确保 class 保持 "contract",因此它履行了职责,但您可以自由重构其背后的逻辑。
伙计们,我有点困惑,因为我知道单元测试不应该依赖于外部世界。好的,我知道这不是依赖关系,但为什么不测试内部逻辑呢?
任何的想法?请随时添加为答案!
确实...你测试什么是输出到"outer world,"而不是输入来自外部世界。
这个想法是,您测试代码为输出正确结果所采取的内部步骤越多,当实现发生变化时,您的单元测试就越会无意中中断 even 尽管最终结果完全正确。您只希望单元测试在最终结果错误时抱怨。
所以基本上 class 中的任何内部逻辑都必须通过一些可以从 class 之外访问的方法公开。这样您就可以测试您的内部逻辑,但您不会直接访问它。
所以,我看过一个关于 TDD 的视频,主持人说,你应该只对 class 的部分进行单元测试,即为外部世界提供一些东西。他提到这很好,因为这种方法确保 class 保持 "contract",因此它履行了职责,但您可以自由重构其背后的逻辑。
伙计们,我有点困惑,因为我知道单元测试不应该依赖于外部世界。好的,我知道这不是依赖关系,但为什么不测试内部逻辑呢? 任何的想法?请随时添加为答案!
确实...你测试什么是输出到"outer world,"而不是输入来自外部世界。
这个想法是,您测试代码为输出正确结果所采取的内部步骤越多,当实现发生变化时,您的单元测试就越会无意中中断 even 尽管最终结果完全正确。您只希望单元测试在最终结果错误时抱怨。
所以基本上 class 中的任何内部逻辑都必须通过一些可以从 class 之外访问的方法公开。这样您就可以测试您的内部逻辑,但您不会直接访问它。