从cpp单元测试用例中为规范生成参考测试文件
Producing reference test files out of CPPunit test cases for a specification
我正在为一个处理数据转换的规范编写一个参考实现。
我有一些测试用例检查数据是否正确地向前和向后转换,例如:
void test(){
int x[maxTest], y[maxTest], z[maxTest];
fillRandomly(x, testSize);
MyTransform trans = MyTransform(testsize);
trans.apply(x, testSize, y);
trans.remove(y, testSize, z);
for(int i = 0; i < testSize; i++)
CPPUNIT_ASSERT(abs(x[i] - z[i]) < 2);
}
数据类型在测试用例和转换之间变化很大。
我想生成的是包含输入/输出和中间阶段的文件,以便进一步的实现可以验证它们的结果。
有一些明显的方法可以让这个工作(例如,命名输出文件并把所有东西都放进去),但大多数方法都意味着回到每个测试用例和一大堆复制粘贴。
来自Java,内省让我想到了一个包装器来解决我的一些问题(自动命名测试输出文件…),但不是全部,我被建议在c++中远离它(欢迎意见)。
通用的apply/remove方法似乎也是一个很好的选择,但不会那么容易,因为没有抽象的转换类型和转换之间的一致性(可能仍然是一个很好的选择,因为没有那么多类型的转换)。
所以我想知道你们中是否有人做过类似的事情,以及你们是如何解决的。我不介意修改所有的测试用例,如果这意味着以后我可以有一些干净的东西。
您所描述的并不是一个真正的单元测试,因此单独使用CppUnit可能不是您的最佳选择。
看起来你正在尝试做三件独立的事情,但把它们结合在一起一次完成它们。您想要运行单元测试,您想要生成测试数据,您想要验证程序与生成的数据一起工作,并且您试图在单个单元测试框架内完成所有这些工作。但是因为它做了很多事情,你发现很难重用。
考虑将其简化为三个测试应用程序:一个CppUnit测试套件,只执行单元测试(这些测试应该与测试数据文件无关);测试数据发生器;还有一个转换测试员。每次构建时都应该运行自动化单元测试。当您运行数据生成器时,您应该在它输出的数据上自动执行测试器,以确保您生成了良好的数据。然后,您可以将已知的测试数据和测试应用程序交付给您的客户端。
- 我在c++代码中生成了一个运行时#3异常
- Cppcheck生成xml转储文件
- 如何使用CMake编译.proto文件来生成.grpcp.pb.cc和.grpc.pb.h文件
- 如何在C++中使用结构生成映射
- 使用 C/C++ 宏生成函数签名
- C++错误消息*成员参考.**初学者*
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 如何从具有移动语义的类对象中生成共享指针
- 生成文件不对文件使用隐式规则
- 在决定是通过参考还是通过价值时,尺寸真的是一个问题吗
- boost::asio如何生成多个协同程序,然后加入它们
- C++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)
- 参考资源文件VC++中的$(SolutionDir)
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- 为什么要为具有参考成员变量的类生成默认的复印件
- 节俭生成的代码未定义的参考
- 在Hevc参考软件HM 16.9中,我需要帮助生成cu, pu和tu的详细信息
- 从cpp单元测试用例中为规范生成参考测试文件