编写junit测试来处理继承地狱

时间:2017-02-05 17:00:23

标签: java junit

我希望在我们的代码库中添加一些junit。

我们有一组继承自抽象基类的类。遗传是几层深(基础 - > A,B,C - > C1,C2,C3-> C3-1等)。有时某人会覆盖具有多个子类的类(A类)的方法。但正因为如此,我们对那些在A类的通话儿童班中的成绩感到不好。

所以,我正在寻找能够尝试阻止这种情况并创建一个测试框架来解决这个问题的解决方案。

我的初期是,我们需要创建一个TestSuite,需要检查TestClass通过反射检查Base类中的每个方法至少有一个测试用例。这将确保在中级类中添加重写方法的人知道他们的更改将影响子类。

另外,我正在和一个说过那里可能有图书馆的人说话。

我正在寻找如何编写测试来处理这种情况的想法和示例。在这种情况下,重构不是一种选择。

1 个答案:

答案 0 :(得分:1)

很抱歉,但对错误设计的正确答案不是“修复”#34;通过提出"有趣的"单元测试。

你通过修复糟糕的设计来修复糟糕的设计。

换句话说:关于OO要理解的第一件事是LSP(利斯科夫替代原则)。换句话说:当你的开发人员在"中间"你的继承树会导致子类中的意外行为进一步下降,那么你应该投资于教育和设计会议。

除此之外,您不需要进行特定测试。当您对公共类的所有公共方法进行全面测试时,您应该很快发现这类问题。但是没有办法从语法上确定你对所有类都有良好测试。对某些方法X有 n 测试方法的事实......并没有说明任何测试方法的质量。知道你有足够的"并没有帮助。测试...但不幸的是,遗憾的是,有一半的测试没有进行适当的检查/验证;因此他们一直都在不停地经过。

长话短说:你在这里看XY问题。你的Y问题是"当我们弄乱代码时,我们的测试不会失败。但是你的X问题是:你首先创造了一个糟糕的设计;现在你正在寻找解决这个问题的方法。从长远来看,这根本就无法解决。