Wil*_*ich 8 c++ inheritance unit-testing cppunit visual-studio-2013
我有一个继承自另一个类的类,如下所示:
class TestClass : public BaseClass
Run Code Online (Sandbox Code Playgroud)
我想知道是否有可能使用TEST_CLASS宏或其他宏作为Microsoft单元测试框架C++的一部分,使这个测试类.我试过了:
class TEST_CLASS(TestClass : public BaseClass)
Run Code Online (Sandbox Code Playgroud)
但IDE给出错误'错误:预期定义或标记名称'和编译器错误是错误C3861:'__ GetTestClassInfo':标识符未找到
我知道继承测试类可能是不好的做法,但它会使实现测试变得更容易.我对C++比较陌生,所以我想知道它是否是我错过的简单内容,或者它是否是不可能的.
谢谢,
您还没有包含其他一个选项,而其他选项可能会在不知道解决方案的情况下绊倒此问题.
实际上,您可以通过查看宏本身来从任意类型派生:
///////////////////////////////////////////////////////////////////////////////////////////
// Macro to define your test class.
// Note that you can only define your test class at namespace scope,
// otherwise the compiler will raise an error.
#define TEST_CLASS(className) \
ONLY_USED_AT_NAMESPACE_SCOPE class className : public ::Microsoft::VisualStudio::CppUnitTestFramework::TestClass<className>
Run Code Online (Sandbox Code Playgroud)
由于C++支持多重继承,因此可以使用类似于以下内容的代码轻松派生:
class ParentClass
{
public:
ParentClass();
virtual ~ParentClass();
};
TEST_CLASS(MyTestClass), public ParentClass
{
};
Run Code Online (Sandbox Code Playgroud)
请记住,如果您正在使用资源,则需要使用虚拟析构函数来调用它.如果要使用它们,还必须直接调用initialize和cleanup方法,因为它们创建的静态方法不会自动调用.
祝你好运,测试好!