C# 名为suppress Debug.WriteLine和Trace.WriteLine的单元测试代码
在运行测试时,我需要查看一些代码 TestContext必须是我的测试类的一部分,我需要 显示正在测试的类的debug.writeline。我考虑 只需将TestContext传递给MessageStatus静态方法,就可以了 必须这样做,但这将是一个PITA,因为UnitTest类将 将TestContext传递给它正在测试的对象。太紧 适合我的口味 基本上C# 名为suppress Debug.WriteLine和Trace.WriteLine的单元测试代码,c#,unit-testing,visual-studio-debugging,C#,Unit Testing,Visual Studio Debugging,在运行测试时,我需要查看一些代码 TestContext必须是我的测试类的一部分,我需要 显示正在测试的类的debug.writeline。我考虑 只需将TestContext传递给MessageStatus静态方法,就可以了 必须这样做,但这将是一个PITA,因为UnitTest类将 将TestContext传递给它正在测试的对象。太紧 适合我的口味 基本上 [TestMethod] public void TestA() { //....
[TestMethod]
public void TestA()
{
//....
Assert.IsTrue(Blah.Blah()));
}
public void Blah()
{
Debug.WriteLine("Hello");
}
当我运行单元测试时,从不出现
我可以把它改成:
TestContext t;
[TestMethod]
public void TestA()
{
//....
Assert.IsTrue(Blah.Blah(t)));
}
public void Blah(TestContext p1)
{
p1.WriteLine("Hello");
}
但这太疯狂了,它意味着改变我所有的签名和紧密耦合。我读了这篇文章,但没有帮助:(您需要使用
控制台.WriteLine
以使输出显示在测试运行程序中。然而,这是一件坏事。我建议使用类似nlog的日志框架。如果您需要查看Debug.WriteLine生成的行或处理Debug.Assert生成的断言,您可以创建自己的系统。Diagnostic.TraceListener将输出重定向到TestContext-请参阅我的答案
请注意,下面的示例已简化,您可能希望保存当前侦听器并在测试结束时还原
Debug.Listeners.Clear();
Debug.Listeners.Add(new MyListenerThatDoesNotShowDialogOnFail());
请参阅TraceListener的示例,该示例在
Debug.Listeners.Clear();
Debug.Listeners.Add(new MyListenerThatDoesNotShowDialogOnFail());