CXXTEST套件可以在运行时动态扩展吗?
-
04-10-2019 - |
题
我希望动态扩展我的 CXXTEST套房 有了其他测试项目,但是正在发现所有测试场景都必须在编译时可用(硬编码)。
我的情况是,我有一个相当笨重的C ++类,该类有20多种要测试的方法。需要对40多个不同的数据集测试此类。这些数据集通过类构造函数获得,该数据集通过参数控制。
我的主要目的是避免为不同的数据集重写相同的20个测试用例。我想使用包含数据集列表的控制文件,并且只需为同一测试套件创建不同的固定装置即可。
Q1)一个人(在运行时间)如何在测试套件中添加更多测试?
Q2)一个人可以在运行时动态添加灯具吗?是否有更好的测试套件可以进行动态固定装置?
Q3)这是TDD技术避免的事情吗?任何人都可以很好地摘要TDD技术。
谢谢,
- J Jorgenson-
解决方案
实际上没有任何直接的方法。测试数量是在编译时间之前确定的,当您运行时 cxxtestgen
. 。它解析您的文件并找到以从 test
. 。它也发现 TestSuite
后代并生成代码以实例化每一个。你可以 写一个 createSuite
功能 在每个测试套件上,将参数传递到套件的构造函数,但您仍然仅限于返回一个对象。
您可以修改构建设置,以调用测试程序40个不同时间,每次在命令行上传递另一个参数。该计划中的皱纹是默认 main
由CXXTEST生成的不接受命令行参数。您需要提供自己的实现,以检查参数,然后随后调用普通测试跑者。这样的事情:
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>
在文件的末尾,并使用 这 --template
生成测试程序的选项.
但是只要你写自己的 main
, ,您也可以尝试在此处解析数据集文件,然后多次调用测试跑步者。这样的事情:
int main() {
std::fstream dataset("datasetlist.txt");
int result = 0;
while (std::getline(dataset, global_var))
result += CxxTest::ErrorPrinter().run();
return result;
}