mstestで、TEST_CLASSを継承したいとき。
mstestで共通の関数をまとめたい。
継承がうまくできないな。
CppUnitTestFramework自体は、継承をサポートしていないようだ。
マクロ自体は、以下のようなので、多重継承できるみたい。
/////////////////////////////////////////////////////////////////////////////////////////// // 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>
parentClass.cpp TEST_CLASS(ParentClass) { public: ParentClass(); virtual ~ParentClass(); };
#include "parentClass.cpp" TEST_CLASS(MyTestClass), public ParentClass { };
こうすると、VisualStudioがクラスとして認識する。
includeしないと、クラスとして認識してくれない。
C2385とC2594が出てしまう。
だめそうだ。
エラー C2385 '__GetTestVersion' へのアクセスがあいまいです
エラー C2594 'static_cast': 'void (__thiscall Tests_UnitTest::UT_Table::* )(void)' から 'Microsoft::VisualStudio::CppUnitTestFramework::TestClassImpl::__voidFunc' への変換はあいまいです。
TEST_CLASS(ParentClass)をやめて
class ParentClassにすると、C2385とC2594は消えた。