gpt4 book ai didi

unit-testing - 私有(private)/ protected 方法是否应该进行单元测试?

转载 作者:行者123 更新时间:2023-12-03 05:13:39 25 4
gpt4 key购买 nike

在 TDD 开发中,您通常要做的第一件事是创建接口(interface),然后开始针对该接口(interface)编写单元测试。当您完成 TDD 过程时,您最终将创建一个实现该接口(interface)的类,然后在某个时刻您的单元测试将会通过。

现在我的问题是关于我可能必须在类中编写的私有(private)和 protected 方法,以支持接口(interface)公开的方法/属性:

  • 类中的私有(private)方法是否应该有自己的单元测试?

  • 类中的 protected 方法是否应该有自己的单元测试?

我的想法:

  • 特别是因为我正在对接口(interface)进行编码,所以我不应该担心 protected /私有(private)方法,因为它们是黑匣子。

  • 因为我正在使用接口(interface),所以我正在编写单元测试来验证定义的契约是否由实现该接口(interface)的不同类正确实现,因此我不应该担心私有(private)/ protected 方法,并且应该执行它们通过调用接口(interface)定义的方法/属性的单元测试。

  • 如果我的代码覆盖率没有显示 protected /私有(private)方法被命中,那么我没有正确的单元测试,或者我有未使用的代码,应该被删除。

最佳答案

不,我不考虑测试私有(private)或 protected 方法。类的私有(private)方法和 protected 方法不是公共(public)接口(interface)的一部分,因此它们不会公开公共(public)行为。一般来说,这些方法是通过在测试变绿后应用重构来创建的。

因此,这些私有(private)方法是通过断言公共(public)接口(interface)行为的测试隐式进行测试的。

从更哲学的角度来说,请记住您正在测试行为,而不是方法。因此,如果您想到被测试的类可以做的一组事情,只要您可以测试并断言该类的行为符合预期,是否存在该类内部使用的私有(private)(和 protected )方法来实现这种行为是无关紧要的。这些方法是公共(public)行为的实现细节。

关于unit-testing - 私有(private)/ protected 方法是否应该进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5601730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com