我正在使用RemoteTestRunner
运行NUnit测试。最后,我得到一个包含结果的TestResult
对象。单元测试项目编译为控制台应用程序。
问题是,在运行测试之后,输出会以某种方式重定向,并且我无法将结果打印到控制台。
这是代码。它不输出任何,甚至不输出"Open, sesame!"
(虽然它确实运行到最后 - 在调试器中确认)。
有什么建议吗?
此外,是否有内置方法列出给定TestResults
实例的失败结果?
public static void Main()
{
TestPackage testPackage = new TestPackage(AssemblyPath);
RemoteTestRunner remoteTestRunner = new RemoteTestRunner();
remoteTestRunner.Load(testPackage);
TestResult testResult = remoteTestRunner.Run(null);
Console.WriteLine(testResult.IsFailure);
Console.WriteLine("Open, sesame!");
}
public static string AssemblyPath
{
get
{
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
return path;
}
}
答案 0 :(得分:3)
在使用
运行测试之前,您是否尝试存储控制台的当前输出流?var currentOut = Console.Out;
然后在使用
执行运行后将其设置回来Console.SetOut(currentOut);
此外,是否有内置方法列出给定TestResults实例的失败结果?
我找不到任何东西。但是,以下代码应该为您提供一些帮助。它以递归方式介绍组合的TestResult
结构,并向控制台输出每个测试的结果。
static void OutputResult(TestResult result)
{
if(result.HasResults)
{
foreach (var childResult in result.Results)
{
OutputResult((TestResult)childResult);
}
return;
}
Console.WriteLine("{0}:{1}", result.FullName, result.ResultState);
}