C ++应用程序的端到端测试框架

时间:2016-11-25 11:05:28

标签: c++ c linux testing automated-tests

我正在测试一个C / C ++应用程序。对于大多数方法,我能够使用CppUTest编写单元测试。 但是有一些不是,我想编写集成/端到端测试来测试这些方法。 我想测试是否

  • 生成正确的输出文件

  • 对于invalud参数打印正确的错误消息(它是一个命令行工具)

  • 它显示正确的输出messgaes

我的问题是,是否有工具,或者我应该编写一些脚本来调用我的应用程序,捕获输出等?如果是,如何启动这些脚本?从CppUtest调用它们?

1 个答案:

答案 0 :(得分:1)

我知道几种测试输出正确的方法:

如果使用CMake和CTest,则可以使用CTest将程序输出与预期输出进行比较。仅适用于文本输出(通常是屏幕输出),如果您输出随机数量的时间/日期和类似的东西,它将无法工作。在CMake manuel中查找add_test_output_check()。

如果您的程序没有硬编码到stdout,那么您可以传递一个std :: ostringstream,然后使用您首选的单元测试框架测试字符串的内容。

最后但并非最不重要的是,您可以使用dup2()为stdout和stderr定义其他文件描述符,执行测试并最后检查文件的内容。

对于输出文件,我猜你必须创建一个引用输出文件,然后将该文件的内容与测试生成的文件进行比较:编写一个加载两个文件并执行memcmp()的测试函数关于数据。