【发布时间】:2018-12-20 19:35:34
【问题描述】:
单元测试是否应该检查一个类是否使用反射实现了一个接口(与继承相同的问题)?如果不是,为什么?
如果移除了实现,代码仍然可以编译,并且测试可能仍然成功(这取决于代码的作用)。
【问题讨论】:
标签: unit-testing inheritance implements
单元测试是否应该检查一个类是否使用反射实现了一个接口(与继承相同的问题)?如果不是,为什么?
如果移除了实现,代码仍然可以编译,并且测试可能仍然成功(这取决于代码的作用)。
【问题讨论】:
标签: unit-testing inheritance implements
单元测试应该测试任何可能不起作用的东西。如果编程语言不能确保类实现合约中的所有方法,那么您可能需要在测试中检查这一点。
【讨论】:
您应该测试什么对您的代码很重要。继承、接口之类的东西最好 实现细节应该隐藏在原始数据结果之外。
也就是说,如果你的代码在没有继承的情况下通过,它可能不需要继承,它应该被清理为垃圾。
【讨论】:
A 和类B 都实现了一个特定的接口I。 A 和 B 可以被客户端用作 I,直到有人决定 B 不再实现 I。如果没有特定的测试,代码仍然可以编译并且测试仍然可以通过。然后我猜单元测试应该检查这个。
I 作为抽象,而依赖 B 作为具体实现。您无法对此进行真正的测试,因为代码没有对B 的稳定性做出任何保证。
在我的职业生涯中,有几次我写过这种单元测试,主要是为了测试约定。
例如有一个隐含的假设,即所有单元测试都应该从 BaseTest 继承(尽管从技术上讲,如果没有这个,一切都可以正常工作,但为了连贯性,我们希望这样做),并且我们有一个单元测试可以完全执行这一点:)。
所以是的,如果有必要,这很有意义。
【讨论】: