CatchTEST_CASE
で複数の s の実行順序を保証できますか? LLVM を使用していくつかのコードをテストしていますが、明示的に初期化する必要があるいくつかの卑劣なグローバル状態があります。
現在、次のようなテスト ケースが 1 つあります。
TEST_CASE("", "") {
// Initialize really shitty LLVM global variables.
llvm::InitializeAllTargets();
llvm::InitializeAllTargetMCs();
llvm::InitializeAllAsmPrinters();
llvm::InitializeNativeTarget();
llvm::InitializeAllAsmParsers();
// Some per-test setup I can make into its own function
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile(...));
CHECK_NOTHROW(Compile...));
CHECK_NOTHROW(Interpret(...));
CHECK_THROWS(Compile(...));
CHECK_THROWS(Compile(...));
}
私が望むのは、それを 3 つにリファクタリングすることですTEST_CASE
。
- 1 つはコンパイルに合格する必要があるテスト用で、
- 1 つは失敗するはずのテスト用であり、
- 1つは解釈に合格する必要があるテスト用です(将来的には、おそらくそのような分割がさらに行われるでしょう)。
しかし、不便なグローバルを設定する前にTEST_CASE
それが呼び出された場合、それらは初期化されず、テストは誤って失敗するため、単純にテスト内容を別の内容に移動することはできません。TEST_CASE