【发布时间】:2010-09-11 04:14:22
【问题描述】:
当您使用组合时,您可以模拟其他对象 您的被测类所依赖的,但是当您使用 继承,你不能模拟基类。 (或者你可以吗?)
我一般尝试prefer composition over inheritance, 但有时继承似乎真的是最好的工具 对于这项工作 - 好吧,至少在涉及到单元测试之前。
那么,如何测试继承?或者你只是把它当作垃圾 不可测试并改用组合?
注意:我主要使用 PHP 和 PHPUnit,所以请帮忙 最受赞赏。但知道也会很有趣 如果有其他语言的解决方案。
【问题讨论】:
-
我不明白如何模拟超类。那必须是 ihmo 的语言功能。你到底想测试什么?在我看来,反思可能对你有帮助?
-
我也不知道如何模拟父类。这就是我问的原因。但我不认为这是不可能的 - 计算机中的东西很少。
-
我还是不明白你的要求。如果您使用自己的单元测试测试超类方法,然后使用自己的不同测试测试子类方法,那么有什么问题/缺少?听起来您想在子类测试中再次测试超类方法?为什么你需要这样做?还是我错过了什么
-
@Robse 这仅在子类仅添加新方法而不覆盖父类中的任何方法时才有效。但是当我在超类中重写一个方法时,我需要确保新方法现在可以改变超类的行为,同时又不会破坏它不应该影响的行为。跨度>
-
the solution given by munificent 有一个 nice example。让测试层次结构类似于您的类层次结构。
标签: php unit-testing oop inheritance phpunit