单元测试类层次结构的良好做法

时间:2019-04-11 15:11:21

标签: c++ unit-testing testing class-hierarchy

单元测试类层次结构的常用/广泛接受的惯例是什么?

我试图寻找与此问题相关的不同问题,但找不到全面的问题。

我们假设正在测试一个层次结构。

class Base 
{
        int base_internal() { return 10;}                

    public:
        int virtual do_f() { return 0; }

        int execute() {
            return do_f()*base_internal();
        }
};

class DerrivedA : public Base
{
        int a_specefic() { return 4; }

    public:
        int virtual do_f()  { return a_specefic(); }
};


class DerrivedB : public Base
{
        int b_specefic() { return 8; }

    public:
        int virtual do_f()  { return b_specefic(); }
};

现在用于单元测试基础结构,我在这里考虑两种策略。

策略1。每种类型都有“测试人员”类,从相应的类派生并进行测试

class TestForBase : public Base {...};
class TestForDerrivedA : public DerrivedA {...};
class TestForDerrivedB : public DerrivedB {....};

策略2 。使用访问者设计模式的“认证”版本(将具有单个TestVisitor),而不是使用accept()方法修改每个被测类,并在visit()内部进行测试)的测试人员课程

class Base 
{
        void accept(Tester& t);
        int base_internal();

    public:
        int virtual do_f();
        int execute();
};


class Derrived : public Base
{
        void accept(Tester& t);
        int a_specefic();

    public:
        int virtual do_f();
};

struct Tester
{
        void visit(Base* b)  { ... };
        void visit(Derrived* d) { ... } ;
};

还有哪些其他选择?

0 个答案:

没有答案