我使用cxxtest作为我的C++类的测试框架,并想找出一种方法来模拟将数据发送到通常期望从标准输入接收它的类.我有几个不同的文件,我想在不同的测试中发送到类,所以从命令行到测试套件可执行文件的重定向不是一个选项.
基本上,我真正想要做的是找到一种方法来重新定义或重定向'stdin'句柄到我在程序中创建的其他值,然后使用这些测试中的fwrite()以便相应的fread()类内部从程序中提取数据,而不是从与可执行文件关联的实际标准I/O句柄中提取数据.
这甚至可能吗?独立于平台的解决方案的奖励积分,但至少,我需要在Windows下使用Visual Studio 9.
适当的方法是重写您的类,以便它们是可测试的.它们应该接受它们应该从中读取数据的句柄,流或文件作为参数 - 在测试框架中,您可以在流中模拟或提供包含测试数据的文件的路径.