gpt4 book ai didi

c# - 如何使用 xUnit.net 进行单元测试控制台输出?

转载 作者:太空狗 更新时间:2023-10-30 00:15:49 24 4
gpt4 key购买 nike

我有一个方法可以打印类的私有(private)变量。

public class Test
{
private int number;

public Test(int number)
{
this.number = number;
}

public void PrintValue()
{
Console.WriteLine("Number: " + number);
}
}

如何创建单元测试以确保它在控制台上打印出我期望的值?

最佳答案

使控制台输出成为依赖项。由于 Console.WriteLine 会将其输出重定向到 Console.Out property ,您只需要 TextWriter 实例:

public Test(TextWriter outputWriter, int number)
{
this.outputWriter = outputWriter;
this.number = number;
}

public void PrintValue()
{
outputWriter.WriteLine("Number: " + number);
}

在实际应用中,您将它传递给 Console.Out 以打印到系统控制台。在测试中,您只需使用假编写器(例如基于 StringBuilderStringWriter):

const int NumberToPrint = 5;
var content = new StringBuilder();
var writer = new StringWriter(content);
var sut = new Test(writer, NumberToPrint);

sut.PrintNumber();

var actualOutput = content.ToString();
Assert.AreEqual(actualOutput, "Number: 5");

关于c# - 如何使用 xUnit.net 进行单元测试控制台输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11019555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com