c# - 单元测试帮助。如何测试消息输出到控制台?

标签 c# tdd nunit

我是单元测试的新手。如何检查控制台输出? 我有

namespace XXShapes
{
    public abstract class XXShape
    {
        public virtual void DrawXXShape()
        {
            Console.WriteLine("The XXShape was drawn.");

        }
    }

public class XXCircle : XXShape
{
    public override void DrawXXShape()
    {
        Console.WriteLine("The XXCircle was drawn.");
    }
}

namespace XXShapes.Test
{
    [TestFixture]
    public class XXShapeTest
    {
        [Test]
        public void MyFirstTest()
        {
            XXShape s = new XXCircle();
            string expected = "The XXCircle was drawn.";
            s.DrawXXShape();
            string actual = Console.ReadLine();
            Assert.AreEqual(expected, actual);
        }
    }


}

我应该如何正确地测试它? 感谢您的指点。 干杯, ~ck

最佳答案

字面上的答案是,您将在调用被测类之前使用 Console.SetOutstdout 定向到 memoryStream 或类似的内容,稍后您可以检查其内容.

更好的答案是使用模拟框架(如 Rhino Mocks)来创建抽象类的具体实例,并期望设置 DrawXXShape 方法将被调用。

关于c# - 单元测试帮助。如何测试消息输出到控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1286518/

相关文章:

c# - 使用 Naudio 将系统音频传输到 Skype

python - pyunit 测试失败,因为方法在传入 5 个参数时只接受 4 个参数

c# - 使用 Mocks 验证依赖调用时的 TDD Arrange Act Assert 模式

c# - 使用 AutoFixture 中的 AutoMock 对构造函数中的响应式(Reactive)代码进行单元测试?

msbuild - 升级后 NUnit 在 MSBuild 中运行失败 - System.IO.FileLoadException : Could not load file or assembly nunit. 框架

c# - 如何保证数据一致性

c# - 数据绑定(bind)问题

c# - ServiceController 显示不正确的 MachineName

带有测试驱动开发的 Javascript 编码指南

c# - 对于 .NET 3.5 以外的任何项目,不能在 c# 项目中命中断点