【发布时间】:2015-10-13 08:26:55
【问题描述】:
是否可以使用(抽象)测试用例定义基本测试装置并从中派生类?
我想支持两个场景(取自 Roy Overshores “单元测试的艺术”):
- 模板测试类模式在基础测试装置中定义抽象测试用例,从而强制派生类实现它们。
- 抽象测试驱动类模式在所有派生类自动继承的基类中实现测试
我无法弄清楚这如何与 googletest 一起使用。如果我有一个基类
#pragma once
class BaseClass : public ::testing::Test
{
};
TEST_F(BaseClass, T1)
{
}
和两个派生类(在不同的文件中)
#include "stdafx.h"
#include "BaseClass.h"
class DerivedClass1 : public BaseClass
{
};
和
#include "stdafx.h"
#include "BaseClass.h"
class DerivedClass2 : public BaseClass
{
};
我得到编译器错误
virtual void __thiscall BaseClass_T1_Test::TestBody(void)" (?TestBody@BaseClass_T1_Test@@EAEXXZ) already defined in DerivedClass1.obj
是否有可能在测试基类中定义具体和纯虚拟测试?
【问题讨论】:
-
我相信你可以使用类型化测试来实现类似于这些模式的用途(或者至少,让你接近你需要的东西)。见code.google.com/p/googletest/wiki/AdvancedGuide#Typed_Tests
标签: c++ unit-testing inheritance abstract-class googletest