2017-04-06 4 views
0

背景:着信トラフィック用のセッションテーブルを作成しています。このテーブルは、すべてのアクティブなUDP/TCP接続を保持する必要があります。googletestのパラメータ化されたテストに関する一般的な質問

私は実装をテストするためにgoogletestパッケージを使用しています。 Iは、次の形式で固定具に基づいてパラメータ化テスト準備:

class SessionTest - initialize all staff. 

struct ConnectionInfo - holds set of connection parameters (IPs, ports, etc..) 

class SessionTestPrepare : SessionTest , testing::WithParamInterface<ConnectionInfo> - initialization. 

TEST_P(SessionTestPrepare, test) - holds the test cases and logic. 

INSTANTIATE_TEST_CASE_P(default, SessionTestPrepare_ testing::Values( 
ConectionInfo{}, 
ConectionInfo{}, 
ConectionInfo{}, 

)を

I新しいパラメータがテストされるたびに、SessionTestコンストラクタおよびセットアップ機能が呼び出されることに気づいた(もちろんデストラクタのと取り壊す)。
注:私のsessionTableはここで宣言され、初期化されています。

  1. パラメータテストの各セット後にSetUpとTearDownを呼び出すことを避ける方法はありますか?
  2. 各テスト後にセッションテーブルの状態をグローバルにすることなく(つまり、2番目の接続パラメータをテストすると、最初のテーブルはまだテーブルにあります)、セッションテーブルの状態を保持する方法はありますか?

答えて

2

セットアップを実行し、テスト・フィクスチャに一度だけ取り壊す、SetUpTestCaseTearDownTestCaseの代わりに、SetUpTearDownを使用します。また、shared resourcesは、静的メンバー変数を持つフィクスチャに格納することができます。たとえば:最初のパラメータ・テストが始まる前に

class SessionTestPrepare : public ::testing::WithParamInterface<ConnectionInfo> //... 
{ 
public: 
    static void SetUpTestCase(); 
    static void TearDownTestCase(); 

    static ConnectionInfo * shared_data; 
    //... 
} 

SetUpTestCaseが呼び出され、最後のパラメータのテストが終了した後TearDownTestCaseが呼び出されます。これらの機能で共有リソースを作成/削除することができます。

関連する問題