我正在使用Xunit.net与Visual Studio Online托管构建 . 我的测试正在本地和构建服务器上被发现并运行良好 . 但是在构建服务器上,我得到了这个异常(导致构建达到“部分成功”状态) . 这很奇怪,因为我的所有测试实际上都是被发现和运行的 .
[xUnit.net 00:00:01.3170293] Exception discovering tests from C:\a\bin\xunit.runner.visualstudio.testadapter.dll: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ---> System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value HKLM\Software\Microsoft\Fusion!EnableLog to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
at System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes)
at System.Reflection.RuntimeAssembly.GetExportedTypes()
at Xunit.Sdk.Executor.EnumerateTests..ctor(Executor executor, Object _handler)$$RethrowMarker$$ at ExceptionExtensions.RethrowWithNoStackTraceLoss(Exception ex)
at Xunit.RemoteAppDomainManager.CreateObjectTObject
at Xunit.Xunit1Executor.EnumerateTests(ICallbackEventHandler handler)
at Xunit.Xunit1.Find(Predicate`1 filter, Boolean includeSourceInformation, IMessageSink messageSink)
at Xunit.Xunit1.Find(Boolean includeSourceInformation, IMessageSink messageSink)
at Xunit.XunitFrontController.Find(Boolean includeSourceInformation, IMessageSink messageSink)
at Xunit.Runner.VisualStudio.TestAdapter.VsTestRunner.GetTests(IEnumerable`1 sources, IMessageLogger logger, XunitVisualStudioSettings settings, Stopwatch stopwatch)
See http://go.microsoft.com/fwlink/?LinkId=254169
我在测试项目中安装了以下nuget包:
-
xunit 1.9.2
-
xunit.runner.visualstudio 0.99.2
其他单元测试框架,如MS Test和NUnit,可以正常运行 . 这让我觉得问题出在Xunit.net而不是Visual Studio Online上 .
我还在xUnit.net GitHub上打开了一个问题,但它仍未解决 . https://github.com/xunit/xunit/issues/47
我怎样才能使这个工作?有没有人知道一个解决方法?我可以以某种方式抑制错误消息吗?
1 回答
testrunner试图在
xunit.runner.visualstudio.testadapter.dll
中发现单元测试 . 为什么?因为它匹配*.test*.dll
的默认测试源规范 .将默认测试源规范更改为
*.tests.dll
或更具体的其他内容时,它将起作用 .资料来源:http://erictummers.wordpress.com/2014/02/11/execute-xunit-tests-on-hosted-build-controller/