【发布时间】:2019-04-16 09:59:45
【问题描述】:
据我了解,测试一个类有两种主要方法。
- 测试类以扩展被测类
- 测试类来创建被测类(组合)
据我所知,第一种方法被认为是一种不好的做法。
但这是为什么呢?
【问题讨论】:
-
FooTest类的实例不必是Foo的实例。绝不应该出现您想使用FooTest的实例来代替Foo的实例的情况。 -
@AndyTurner,一个优点可能是暴露受保护的方法,但我想这也被认为是一种不好的做法(测试受保护的方法)
-
UnitTest 验证被测代码的公共可观察期望行为。 public 表示其他生产代码调用此方法。这并不意味着被测代码通过
public带注释的方法公开了这种行为,但通常情况下确实如此。 -
关于私有/受保护等内容的测试:单元测试是关于发现错误。错误存在于实现中 - 不同的实现,不同的可能错误。将斐波那契视为迭代/递归函数、封闭形式表达式(Moivre/Binet)、查找表:接口始终相同,可能的错误差异很大。此外,在查看覆盖率时,您总是查看实现,而不是接口。你如何设计你的类,以便你真正可以测试实现细节是另一回事......
标签: java unit-testing oop testing