3

次の場合、テスト コードでデータ フィクスチャ ファイルへのパスを計算するにはどうすればよいですか。

  • test/{main.cpp,one_test.cpp,two_test.cpp}
  • で行われたコンパイルbuild/
  • test/fixtures/{conf_1.cfg}

私が直面している問題は次のとおりです。

/* in test/one_test.cpp */
TEST_CASE( "Config from file", "[config]" ) {
  Config conf;
  REQUIRE( conf.read(??? + "/conf_1.cfg") )
}

これまでに見つけた解決策は、構成時にマクロを定義することです。

#define TEST_DIR "/absolute/path/to/test"

wscript私のwithで得られる

def configure(cnf):
    # ...
    cnf.env.TEST_DIR = cnf.path.get_src().abspath()
    cnf.define('TEST_DIR', cnf.env.TEST_DIR)
    cnf.write_config_header('include/config.h')

__FILE__に拡張された他の試みが含まれていました../test/one_test.cppが、使用できませんでした。

背景: Catch testing frameworkwaf build tool を使用しています。

おそらくテストフレームワークに依存する、一般的な慣行またはパターンはありますか?

4

1 に答える 1

1

コンポーネントのリファクタリング (したがってテスト) によってコードが移動するため、コンパイル/ビルド時にこれを解決するのは難しいことがわかりました。2 つの解決策が見つかりました。

  1. データをテストに入れます。これは、文字列または簡単な 16 進ダンプなど、短くて人間が読める場合にのみ実用的です。テストの保守が容易になる場合は、いつでもデータをヘッダー ファイルに入れることができます。
  2. テストを実行するときに、コマンド ラインでデータ ファイルの場所を指定します。このためには、独自の main が必要になる場合があります (「独自の main() の提供」を参照)。
于 2015-07-09T19:45:39.150 に答える