아래 'DoesBlah'테스트의 기본 클래스에서 'MyType'을 사용하고 싶습니다.GTest Typed Test - 사용
#include <gtest/gtest.h>
template <typename T>
struct MemberVariable
{
T m_t;
};
struct Base : public ::testing::Test
{
template <typename MemberType>
using MyType = MemberVariable<MemberType>;
};
template <typename DerivedType>
struct Derived : public Base
{
};
typedef ::testing::Types<int, char> MyTypes;
TYPED_TEST_CASE(Derived, MyTypes);
TYPED_TEST(Derived, DoesBlah)
{
MyType<TypeParam> test;
test.m_t = (TypeParam)1;
ASSERT_EQ(test.m_t, 1);
}
그러나, 나는 다음과 같은 컴파일 오류가 발생합니다 :
gti/specific/level/Test.t.cpp: In member function 'virtual void Derived_DoesBlah_Test<gtest_TypeParam_>::TestBody()':
gti/specific/level/Test.t.cpp:25:5: error: 'MyType' was not declared in this scope
MyType<TypeParam> test;
나는 TestFixture ::합니다 MyType, 유형 이름 TestFixture ::합니다 MyType를 사용하여 시도했지만 모두 작동하지 않았다.
Derived에서 'MyType'이라는 것을 인식하도록하려면 어떻게해야합니까?
template <typename TypeParam>
class Derived_DoesBlah_Test : public Derived<TypeParam>
{
private:
typedef Derived<TypeParam> TestFixture;
virtual void TestBody();
};
template <typename TypeParam>
void Derived_DoesBlah_Test<TypeParam>::TestBody()
그래서 다음에 {}
블록이 Derived<TypeParam>
에서 파생되는 템플릿 클래스의 멤버 함수 정의입니다 : 일부 단순화와
매우 자세한 설명을 읽어 주셔서 감사합니다! – Supervisor