提问人:goodvibration 提问时间:12/14/2017 最后编辑:halfergoodvibration 更新时间:11/21/2020 访问量:52
暴露内部功能的设计模式(为了外部测试)
Design pattern of exposing internal functions (for the sake of external testing)
问:
我有一个类,需要测试它的一些内部功能。
我不想将这些测试嵌入到类中,因为它们只能由某些外部实体使用,其唯一目的是进行系统验证。
我对此的解决方案是 声明这些内部函数 ,并添加一个类来“公开”它们以供外部使用。protected
下面是一个非常简单的(伪代码)示例:
class public MyClass {
protected int add(int val1, int val2) {
return val1 + val2;
}
protected int mul(int val1, int val2) {
return val1 * val2;
}
}
class MyClassExposurer : public MyClass {
public int addTest(int val1, int val2) {
return super.add(val1, val2);
}
public int mulTest(int val1, int val2) {
return super.mul(val1, val2);
}
}
此设计模式是否有已知的术语?
答:
0赞
floppy12
12/15/2017
#1
您正在为您使用的“设计模式”寻找一个名称:我会说适配器和代理之间的混合。它可以工作,可以保持原样。
更让我困扰的是,使用该解决方案,您被迫复制一个类只是为了更改暴露级别,而您可以考虑使用关键字 friend 来允许您的测试类直接访问私有方法,并且具有不修改测试类(私有)的初始封装级别的额外优势。
评论