C++ プロジェクトで単体テストに Catch2 を使用しています。シングルトン クラスがあり、別のテスト ファイルで使用されています。たとえば、あるファイルがシングルトン自体をテストし、別のファイルがシングルトンと別のコンポーネント間の相互作用をテストしている場合があります。そのため、シングルトン クラスにテスト ファイルごとに異なるモック データのセットを設定する方法があるかどうか疑問に思っていました。
私の知る限り、私には2つの方法があるようです。
- テスト ケースとセクションの使用
TestA.cpp
TEST_CASE("A") {
SingletonClass& sc = SingletonClass::getInstance();
sc.clear();
sc.add(data1);
sc.add(data2);
// ... more methods to populate singletonClass
SECTION("Check A1"){
// Perform test checks
}
SECTION("Check A2"){
// Perform test checks
}
}
TestB.cpp
TEST_CASE("B") {
SingletonClass& sc = SingletonClass::getInstance();
sc.clear();
sc.add(data3); // Different data from TestA.cpp
sc.add(data4);
// ... more methods to populate singletonClass
SECTION("Check B1"){
// Perform test checks
}
SECTION("Check B2"){
// Perform test checks
}
}
ただし、これはセットアップ関数が各テスト ファイルで 2 回実行されることを意味します。これは必要ではなく、回避したいと考えています。また、すべてのテストを 1 つの SECTION/TEST_CASE にまとめる必要もありません。
- の使用
Listeners
Listener
独自のクラスを作成して登録し、メソッドとメソッドをオーバーライドtestCaseStarting
できることを理解していますtestCaseEnded
。これはすべての TEST_CASE に当てはまるようですが、TestA と TestB に異なる設定をしたいと考えています。
したがって、各テストファイルの最初と最後にセットアップと分解機能を実行するのと同じように、各テストファイルでシングルトンクラスを別々にセットアップできるより良い方法はありますか?