私はWindows(Visual Studio 2017)で書かれたユニットテストをいくつか行いましたが、それらをLinuxに移植する必要があります(GCC 4.9.2 - 私はこのバージョンに固執しています...)。私はWindows上でうまくコンパイルする私の問題のための簡単な例が付属しています(MyParamType
はeテンプレートベースクラスの従属型です)、Linuxではコンパイルされません。変更することでgtestの取得方法TYPED_TESTパラメータタイプ
#include <gtest/gtest.h>
template<typename T>
struct MyTest : public testing::Test
{
using MyParamType = T;
};
using MyTypes = testing::Types<int, float>;
TYPED_TEST_CASE(MyTest, MyTypes);
TYPED_TEST(MyTest, MyTestName)
{
MyParamType param;
}
In member function ‘virtual void MyTest_MyTestName_Test::TestBody()’:error: ‘MyParamType’ was not declared in this scope MyParamType param;
:
例
TYPED_TEST(MyTest, MyTestName)
{
typename MyTest<gtest_TypeParam_>::MyParamType param;
}
コードがコンパイルされ、それは非常に醜いです。
TYPED_TEST
からテンプレートパラメータタイプを取得する簡単な方法がありますか?
私はGTESTこの – Felics