2016-06-29 10 views
1

私はいくつかのテストを書いていますC++ファイルにこのエラーが表示されます。キャッチテストフレームワークの問題:キャッチを使用することはできません::セッション()

catch.hpp単一のヘッダファイルを見てみると
error: no member named 'Session' in namespace 'Catch' 
     testResult = Catch::Session().run(test_argc, test_argv); 
        ~~~~~~~^ 

を、私は気づきましたSession()メンバ関数を実装すべきコードが灰色で表示されている可能性があります。恐らく#ifdefのどこかで見つけられません。

セッションクラスを使用するように設定するマクロはありますか?

キャッチバージョン:1.5.3および1.5.6。

参考:https://github.com/philsquared/Catch/blob/master/docs/own-main.md

+2

必須サニティチェック:あなたが '#include' catch.hppの前に' CATCH_CONFIG_RUNNER'を定義していますか? – jaggedSpire

+0

@ jaggedSpire - テストを書く場所ではないmain()を定義しているファイルで、はい、一度だけです。 – Pietro

+0

コンパイルエラーはmain()を定義するファイルにありますか? – jaggedSpire

答えて

1

あなたが実行するために、独自のmainを定義していないファイルからCatch::Sessionのコンストラクタを呼び出すようにしようとしています。キャッチはそれがどこだから、それはカスタムmain定義(で使用することはできません翻訳単位にCatch::Sessionの建設を妨げている可能性があります

Catch::Session session; // There must be exactly once instance 

documentation on defining your own mainによると、Catch::Sessionの唯一のインスタンスがあると想定しています使用されるはずです)、コンパイルから間違いを防ぐためです。

+0

と、1回のアプリケーション実行ごとに複数のテストを実行したい場合は、異なるargcを使ってテストを実行したいのですが、1つのインスタンスのみを使用せずに引数を保持しているように見えます。 –

+0

は私にとって新しい質問のようです。 – jaggedSpire

関連する問題