Chr*_*ris 98 c# debugging unit-testing mstest visual-studio
我的单元中的任何调用都会测试,Debug.Write(line)或者Console.Write(Line)只是在调试时跳过,并且从不打印输出.从我正在使用的类中调用这些函数.
我知道单元测试是自动化的,但我仍然希望能够从单元测试中输出消息.
Yog*_*ise 141
谈话有点晚了.
我还试图让Debug或Trace或Console或TestContext在单元测试中工作.
这些方法都不会在输出窗口中显示工作或显示输出.
Trace.WriteLine("test trace");
Debug.WriteLine("test debug");
TestContext.WriteLine("test context");
Console.WriteLine("test console");
Run Code Online (Sandbox Code Playgroud)
VS2012和Greater
(来自评论)在Visual Studio 2012中,没有图标.相反,测试结果中有一个名为Output的链接.如果单击该链接,则会看到所有内容WriteLine.
在VS2012之前
我注意到在我的测试结果窗口中,在运行测试后,在小成功的绿色圆圈旁边,有另一个图标,我加倍点击它.这是我的测试结果,它包括了上面所有类型的writelines.
fre*_*nky 108
尝试使用TestContext.WriteLine()测试结果中的输出文本.
例:
[TestClass]
public class UnitTest1
{
private TestContext testContextInstance;
/// <summary>
/// Gets or sets the test context which provides
/// information about and functionality for the current test run.
///</summary>
public TestContext TestContext
{
get { return testContextInstance; }
set { testContextInstance = value; }
}
[TestMethod]
public void TestMethod1()
{
TestContext.WriteLine("Message...");
}
}
Run Code Online (Sandbox Code Playgroud)
"魔术"在MSDN中描述为"测试框架自动设置属性,然后您可以在单元测试中使用它."
小智 57
在Visual Studio 2017中,您可以看到测试资源管理器的输出.
1)在你的测试方法中,Console.WriteLine("something");
2)运行测试.
3)在"测试资源管理器"窗口中,单击"通过的测试方法".
4)然后单击"输出"链接.
然后单击"输出",您可以看到Console.Writeline()的结果.

jon*_*zim 15
这取决于你的测试运行器...例如,我正在使用XUnit,所以如果你正在使用它,请按照以下说明操作:
https://xunit.github.io/docs/capturing-output.html
此方法将输出与每个特定的单元测试分组.
using Xunit;
using Xunit.Abstractions;
public class MyTestClass
{
private readonly ITestOutputHelper output;
public MyTestClass(ITestOutputHelper output)
{
this.output = output;
}
[Fact]
public void MyTest()
{
var temp = "my class!";
output.WriteLine("This is output from {0}", temp);
}
}
Run Code Online (Sandbox Code Playgroud)
我提供的链接中列出了另一种方法,用于写入"输出"窗口,但我更喜欢上一个.
在VS 2019 中
View->Test Exploreradditional output以下屏幕截图中的链接。您可以使用:
all 将记录到额外的输出窗口。
| 归档时间: |
|
| 查看次数: |
102872 次 |
| 最近记录: |