2016-11-07 22 views
0

googletestフレームワークを使用して、継承されたフィクスチャクラスを作成して、パラメータ化された共有リソースとテスト用の共有リソースを作成しようとします。googletestでパラメータ化された共有リソースと共用リソースの両方のテスト

テストを呼び出そうと
class FixtDBadminConnShared : public ::testing::Test { 
    public: 
    static void SetUpTestCase() { 
     shared_conn_ = new ::DB::DB_connection(); 
    } 
    static void TearDownTestCase() { 
     delete shared_conn_; 
    } 
    static ::DB::DB_connection * shared_conn_; 
    }; 
::DB::DB_connection * FixtDBadminConnShared::shared_conn_ = nullptr; 

class FixtDBadminConnExec :public FixtDBadminConnShared, public ::testing::TestWithParam<string> 
    { 
    protected: 
    using FixtDBadminConnShared::SetUpTestCase; 
    using FixtDBadminConnShared::TearDownTestCase; 

    void SetUp() override { 
     query_ = GetParam(); 
    } 
    string query_; 
    };  

TEST_P(FixtDBadminConnExec, SelectWithoutParam) { 
//do smth 
} 
INSTANTIATE_TEST_CASE_P(QueriesOrbital0param, FixtDBadminConnExec, 
::testing::Values(string{ "SELECT * from my_table;" })); 

私は次のエラーここ

Error C2594 'return': ambiguous conversions from 'FixtDBadminConnExec_SelectWithoutParam_Test *' to 'testing::Test *' gtest_mytest e:\libs\googletest\googletest\include\gtest\internal\gtest-param-util.h 415 

は上の415行でGTEST-のparam-util.hの一部であり得ますreturn new TestClass()

template <class TestClass> 
class ParameterizedTestFactory : public TestFactoryBase { 
public: 
    typedef typename TestClass::ParamType ParamType; 
    explicit ParameterizedTestFactory(ParamType parameter) : 
     parameter_(parameter) {} 
    virtual Test* CreateTest() { 
    TestClass::SetParam(&parameter_); 
    return new TestClass(); 
    } 

private: 
    const ParamType parameter_; 

    GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory); 
}; 

私は、パラメータ化されたテスト(TEST_Pマクロ)と共有リソース(TEST_Fマクロ)のテストの両方を使用したいという問題もあると思います。どうすればいいですか?

答えて

1

ここでの問題は、TestWithParam <>がtesting :: Testを継承しており、あいまいな変換があることです。代わりに、WithParamInterfaceから継承します<>

関連する問題