Catch2-用不同的模拟数据填充不同测试文件的单例

问题描述

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

据我所知,我可以采取两种方法。

  1. 使用测试用例和部分

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
    }
}

但是,这意味着安装程序功能将在每个测试文件中运行两次,这不是必需的,我希望避免这种情况。我也不想将所有测试都放在一个SECTION / TEST_CASE下。

  1. 使用Listeners

我知道我可以创建和注册自己的Listener类并覆盖testCaseStartingtestCaseEnded方法,这似乎适用于所有TEST_CASE,但是我想为它设置不同的设置TestA和TestB。

因此,有没有更好的方法可以在每个测试文件中分别设置单例类,使其类似于在每个测试文件的开头和结尾运行设置和拆卸功能?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)