获取从单元测试中发送到 Console.Out 的输出?
我正在使用 NUnit 在 C# 中构建单元测试,我想测试主程序是否实际根据命令行参数输出正确的输出。
有没有办法从 NUnit 测试方法调用 Program.Main(...)
来获取写入 Console.Out
和 Console.Error
以便我可以对其进行验证?
I am building a unit test in C# with NUnit, and I'd like to test that the main program actually outputs the right output depending on the command line arguments.
Is there a way from an NUnit test method that calls Program.Main(...)
to grab everything written to Console.Out
and Console.Error
so that I can verify against it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以重定向
Console.In
,Console.Out
和Console.Error
自定义 StringWriter,如下所示请参阅此博文< /a> 了解完整详细信息。
You can redirect
Console.In
,Console.Out
andConsole.Error
to custom StringWriters, like thisSee this blog post for full details.
您可以使用这个简单的类通过 using 语句获取输出:
以下是如何使用它的示例:
您可以在我的博客文章中找到更详细的信息和工作代码示例 - 在单元测试中获取控制台输出。
You can use this simple class to get the output with a using statement:
Here is an example how to use it:
you can find more detailed information and a working code sample on my blog post here - Getting console output within a unit test.
正如其他人正确建议的那样,您仍然需要集成测试,而不是单元测试。
集成测试
ProgramTest.cs
实施
Program.cs
You still need an integration test, not unit, as others have correctly suggested.
Integration test
ProgramTest.cs
Implementation
Program.cs