gpt4 book ai didi

testing - cxxtest 套件可以在运行时动态扩展吗?

转载 作者:行者123 更新时间:2023-11-28 20:47:21 25 4
gpt4 key购买 nike

我希望动态扩展我的 CxxTest Suite有额外的测试项目,但我发现所有测试场景必须在编译时可用(硬编码)。

我的场景是我有一个相当庞大的 C++ 类,其中有 20 多个方法要测试。此类需要针对 40 多个不同的数据集进行测试。这些数据集是通过类构造函数获得的,通过参数控制。

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

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

Q2) 能否在运行时动态添加灯具?是否有更好的测试套件允许动态夹具?

Q3) 这是 TDD 技术避免的事情吗?任何人都对 TDD 技术有了很好的总结。

谢谢,

-- 乔根森 --

最佳答案

确实没有任何直接的方法可以做到这一点。当您运行 cxxtestgen 时,测试的数量在编译时间之前确定。 .它解析您的文件并查找以 test 开头的方法名称.它还会找到 TestSuite后代并生成代码以实例化每个后代一次。你可以write a createSuite function在每个测试套件上将参数传递给套件的构造函数,但您仍然只能返回一个对象。

您可以修改build设置以调用测试程序 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>在文件末尾,并使用 the --template option to generate your test program .

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

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

关于testing - cxxtest 套件可以在运行时动态扩展吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3762968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com