代码之家  ›  专栏  ›  技术社区  ›  J Jorgenson

cxxtest套件能否在运行时动态扩展?

  •  1
  • J Jorgenson  · 技术社区  · 14 年前

    我想动态地延长我的任期 CxxTest Suite

    我的场景是,我有一个相当大的C++类,它有20种方法被测试。这个类需要测试40多个不同的数据集。这些数据集是通过类构造函数获得的,通过参数控制。

    我的主要目标是避免为不同的数据集重新编写相同的20个测试用例。我想使用一个包含数据集列表的控制文件,为同一个测试套件创建不同的fixture。

    Q1)如何动态地(在运行时)向测试套件添加更多测试?

    问题3)这是TDD技术避免的吗?任何人都对TDD技术有一个很好的总结。

    谢谢,

    1 回复  |  直到 14 年前
        1
  •  1
  •   Rob Kennedy    10 年前

    cxxtestgen . 它解析您的文件并找到以 test TestSuite 子代并生成代码来实例化每个子代一次。你可以 write a createSuite function 在每个测试套件上,将参数传递给套件的构造器,但仍仅限于返回一个对象。

    main

    std::string global_var; // check this in your test cases
    int main(int argc, char* argv[]) { // add parameter list
      global_var = argv[1]; // read parameter list
      return CxxTest::ErrorPrinter().run(); // standard CxxTest
    }
    

    要使用该函数,请省略 --error-printer cxxtestgen公司 ,添加 <CxxTest world> 在文件末尾,使用 the --template option to generate your test program

    但只要你自己写 ,您也可以尝试在那里解析数据集文件,然后多次调用测试运行程序。像这样:

    int main() {
      std::fstream dataset("datasetlist.txt");
      int result = 0;
      while (std::getline(dataset, global_var))
        result += CxxTest::ErrorPrinter().run();
      return result;
    }