我发现在VS2013中通过的一个测试在VS2015中失败了,该测试调用了一个包含调用Console.Clear();
的服务,以便了解情况我进行了一项简单的单元测试。
[TestMethod]
public void ExampleTest()
{
Console.Clear();
}
这个测试在Visual Studio 2013中通过,但在2015中出现以下错误:
测试名称:ExampleTest 测试全名:solution.Common.Test.CacheManagerTest.ExampleTest 测试源:C:\solution.Common.Test\CacheManagerTest.cs : 第34行 测试结果:失败 测试持续时间:0:00:00.3015003
结果堆栈跟踪: 在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 在 System.Console.GetBufferInfo(Boolean throwOnNoConsole, Boolean& succeeded) 在 System.Console.Clear()
在 sol.Common.Test.CacheManagerTest.ExampleTest() 中 C:\solution.Common.Test\CacheManagerTest.cs:第35行 结果消息:
测试方法Alexandria.Common.Test.CacheManagerTest.ExampleTest引发了异常:System.IO.IOException:句柄无效。
我理解如果我的服务没有被控制台调用会导致设计不良的情况。 我问这个问题是为了了解为什么在新版本的Visual Studio中会失败。这是预期的行为吗?有什么变化吗?
我在更改日志中没有看到任何明显相关的内容。
编辑:我从以下dll中调用Console.clear
Microsoft\Framework.NETFramework\v4.5.1\mscorlib.dll
编辑2:
Microsoft.NET\Framework\v4.0.30319\mscorlib.dll
而不是Microsoft\Framework.NETFramework\v4.5.1\mscorlib.dll
。所以可能微软对Console
类进行了一些重构。我会安装 VS2015 并更新。 - Old Fox