Catch2-为不同的测试文件使用不同的模拟数据填充单例 我在CC++项目中使用CACH2进行单元测试。我有一个单例类,它被用于不同的测试文件中。例如,一个文件可能正在测试单例本身,另一个文件可能正在测试单例和另一个组件之间的交互。因此,我想知道是否有一种方法可以为每个测试文件用不同的模拟数据集填充singleton类

Catch2-为不同的测试文件使用不同的模拟数据填充单例 我在CC++项目中使用CACH2进行单元测试。我有一个单例类,它被用于不同的测试文件中。例如,一个文件可能正在测试单例本身,另一个文件可能正在测试单例和另一个组件之间的交互。因此,我想知道是否有一种方法可以为每个测试文件用不同的模拟数据集填充singleton类,c++,catch-unit-test,catch2,C++,Catch Unit Test,Catch2,据我所知,我似乎有两种方法 使用测试用例和部分 TestA.cpp TEST_CASE("A") { SingletonClass& sc = SingletonClass::getInstance(); sc.clear(); sc.add(data1); sc.add(data2); // ... more methods to populate singletonClass SECTION("Che

据我所知,我似乎有两种方法

  • 使用测试用例和部分
  • 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
        }
    }
    
    然而,这意味着安装函数将在每个测试文件中运行两次,这是不必要的,我希望避免这种情况。我也不想将所有测试都集中在一个部分/测试用例下

  • 使用
    侦听器
  • 我知道我可以创建并注册我自己的
    侦听器
    类,并覆盖
    testcasestinging
    testCaseEnded
    方法,这似乎适用于所有测试用例,但我希望对TestA和TestB有不同的设置


    因此,有没有更好的方法可以在每个测试文件中以不同的方式设置我的singleton类,从而类似于在每个测试文件的开始和结束时运行setup and teardown函数?

    您可能需要一个Fixture

    夹具文件: