端到端C++应用

问题描述:

我测试一个C/C++应用测试框架。对于大多数方法,我可以使用CppUTest编写单元测试。 但也有一些不是,我想编写集成/端到端测试来测试这些方法。 我想测试端到端C++应用

  • 正确的输出文件是否产生

  • 为invalud参数适当的错误信息,则打印(它是一个命令行工具)

  • 它显示正确的输出messgaes

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

+0

@特写和downvoters:“相反,描述问题,什么迄今所做来解决它。”我想我已经描述过了。我不想要一个特定的软件建议,相反 - 没有经验 - 我很好奇别人在这种情况下做了什么。 – robert

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

如果使用CMake和CTEST,您可以使用CTEST你的程序的输出与预期输出进行比较。只适用于文本输出(正常情况下是屏幕输出),如果输出随机数字的时间/日期和类似的东西,将不起作用。在CMake manuel中查找add_test_output_check()。

如果你的程序不写硬编码到stdout,那么你可以通过一个std :: ostringstream事后使用您喜欢的单元测试框架测试字符串的内容。

最后但并非最不重要,你可以使用DUP2()来定义其他文件描述符输出和错误,执行测试,并在年底检查文件(S)的内容。

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