c++ - 通过将文本文件发送到标准输入来自动测试 Visual Studio 中的 C++ 控制台应用程序?

标签 c++ visual-studio unit-testing stdin

我将参加我的大学下周组织的编码竞赛。 我只被允许使用 C 或 C++,我更愿意使用 Visual Studio 2010 使用后者。 对于每个任务,都有一个以明文形式提供给标准输入的文本输入,例如:

200 100 10
2 11

我需要一个工具来帮助我使用一些预定义的文本文件作为标准输入来运行我的代码。

在基于 unix 的系统上,我会使用类似这样的东西:

gcc mycode.cpp
./mycode.o <test1.in >result1.out
diff result1.out test1.out

有什么方法可以在 Visual Studio 2010 中实现这一点。

或者也许有人可以推荐一个具有丰富调试功能的不错的 C++ IDE,它会像这样“开箱即用”?

谨致问候, 亚历山大。

最佳答案

您可以使用 Visual Studio 编译器和 Windows 命令行执行基本相同的操作:

cl /EHsc mycode.cpp
mycode.exe <test1.in >result1.out
fc result1.out test1.out

尽管您可能想要一个比 fc 更好的 diff 工具。

您还可以编写代码,以便使用流句柄(或其他一些获取和放置数据的机制)调用执行实际工作的例程,并让测试构建通过它打开的文件而不是通过文件提供数据stdinstdout。测试完成后,真正的程序只需使用 stdinstdout 句柄调用该例程。

C++ 的单元测试框架可能会帮助您实现这一点,但安装和集成其中一个框架可能比编写您自己的简单测试夹具更麻烦。

关于c++ - 通过将文本文件发送到标准输入来自动测试 Visual Studio 中的 C++ 控制台应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3121799/

相关文章:

Django 单元测试 : South-migrated DB works in MySQL, 在 PostGreSQL 中抛出重复的 PK 错误。我错过了什么还是这是一个错误?

c++ - 什么会导致异常 16 : "mutex: Resource busy" to be thrown (using Boost/BB10)?

c - Visual Studio 和c

c++ - 有关调试复制和粘贴到 PowerPoint 2010 的提示

c# - LoadLibrary() 在 C# 中返回 0

visual-studio - Visual Studio 编辑器不再在错误下划线

c# - 错误 : "Spatial types and functions are not available for this provider"

c++ - 如何修改文本文件的 "Date modified"属性而不影响使用 C++ 的内容?

c++ - 库、DLL 和 .h 文件

c++ - 用于浏览 C/C++ 项目中的类的软件