Resharper 不调试 MSTest 测试

Resharper not debugging MSTest tests

我正在使用 Resharper Ultimate 2017.3.1

当我尝试调试单元测试时

[DataTestMethod]
[DataRow("bla", "blub")]
public void Test_When_Then() { ... }

然后测试停止调试,更改为状态 inconclusive,resharper 测试资源管理器中显示以下错误 window:

2018.01.17 13:02:20.367 ERROR Transition failed: Transition from state on event . Cause: System.ArgumentException: There should be at least one test in the test run. Parametername: tests ---> System.ServiceModel.FaultException: There should be at least one test in the test run. Parametername: tests Server stack trace: at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at Microsoft.VisualStudio.TestPlatform.Core.ITestExecutorService.StartTestRun(IEnumerable1 tests, String testRunSettings, TestExecutionContext executionContext, String dataCollectorServiceUri) at JetBrains.ReSharper.UnitTesting.MSTest.Provider.Execution.Wcf.TestExecutorServiceProxy.StartTestRun(IEnumerable1 tests, String testRunSettings, TestExecutionContext executionContext, String dataCollectorServiceUri) --- End of inner exception stack trace --- at JetBrains.ReSharper.UnitTesting.MSTest.Provider.Execution.Wcf.TestExecutorServiceProxy.StartTestRun(IEnumerable1 tests, String testRunSettings, TestExecutionContext executionContext, String dataCollectorServiceUri) at JetBrains.ReSharper.UnitTesting.MSTest.Provider.Execution.MsTestExecutionProtocol.StartTestRun() at Appccelerate.StateMachine.Machine.ActionHolders.ArgumentLessActionHolder.Execute(Object argument) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\ActionHolders\ArgumentLessActionHolder.cs:line 37 at Appccelerate.StateMachine.Machine.States.State2.ExecuteEntryAction(IActionHolder actionHolder, ITransitionContext`2 context) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\States\State.cs:line 340

--- EXCEPTION #1/1 [LoggerException] Message = “ Transition failed: Transition from state on event .
Cause: System.ArgumentException: There should be at least one test in the test run. Parametername: tests ---> System.ServiceModel.FaultException: There should be at least one test in the test run. Parametername: tests Server stack trace: at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at Microsoft.VisualStudio.TestPlatform.Core.ITestExecutorService.StartTestRun(IEnumerable1 tests, String testRunSettings, TestExecutionContext executionContext, String dataCollectorServiceUri) at JetBrains.ReSharper.UnitTesting.MSTest.Provider.Execution.Wcf.TestExecutorServiceProxy.StartTestRun(IEnumerable1 tests, String testRunSettings, TestExecutionContext executionContext, String dataCollectorServiceUri) --- End of inner exception stack trace --- at JetBrains.ReSharper.UnitTesting.MSTest.Provider.Execution.Wcf.TestExecutorServiceProxy.StartTestRun(IEnumerable1 tests, String testRunSettings, TestExecutionContext executionContext, String dataCollectorServiceUri) at JetBrains.ReSharper.UnitTesting.MSTest.Provider.Execution.MsTestExecutionProtocol.StartTestRun() at Appccelerate.StateMachine.Machine.ActionHolders.ArgumentLessActionHolder.Execute(Object argument) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\ActionHolders\ArgumentLessActionHolder.cs:line 37 at Appccelerate.StateMachine.Machine.States.State2.ExecuteEntryAction(IActionHolder actionHolder, ITransitionContext2 context) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\States\State.cs:line 340 ” ExceptionPath = Root ClassName = JetBrains.Util.LoggerException HResult = COR_E_APPLICATION=80131600 StackTraceString = “ at JetBrains.ReSharper.UnitTesting.MSTest.Provider.Execution.MsTestExecutionProtocol.<.ctor>b__10(Object sender, TransitionExceptionEventArgs2 args) at Appccelerate.StateMachine.Machine.StateMachine2.RaiseEvent[T](EventHandler1 eventHandler, T arguments, ITransitionContext2 context, Boolean raiseEventOnException) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\StateMachine.cs:line 404 at Appccelerate.StateMachine.Machine.StateMachine2.OnExceptionThrown(ITransitionContext2 context, Exception exception) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\StateMachine.cs:line 260 at Appccelerate.StateMachine.Machine.Contexts.TransitionContext2.OnExceptionThrown(Exception exception) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\Contexts\TransitionContext.cs:line 74 at Appccelerate.StateMachine.Machine.States.State2.HandleException(Exception exception, ITransitionContext2 context) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\States\State.cs:line 307 at Appccelerate.StateMachine.Machine.States.State2.HandleEntryActionException(ITransitionContext2 context, Exception exception) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\States\State.cs:line 357 at Appccelerate.StateMachine.Machine.States.State2.ExecuteEntryAction(IActionHolder actionHolder, ITransitionContext2 context) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\States\State.cs:line 345 at Appccelerate.StateMachine.Machine.States.State2.ExecuteEntryActions(ITransitionContext2 context) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\States\State.cs:line 330 at Appccelerate.StateMachine.Machine.States.State2.Entry(ITransitionContext2 context) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\States\State.cs:line 247 at Appccelerate.StateMachine.Machine.States.State2.EnterShallow(ITransitionContext2 context) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\States\State.cs:line 285 at Appccelerate.StateMachine.Machine.States.State2.EnterHistoryNone(ITransitionContext2 context) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\States\State.cs:line 429 at Appccelerate.StateMachine.Machine.States.State2.EnterByHistory(ITransitionContext2 context) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\States\State.cs:line 263 at Appccelerate.StateMachine.Machine.Transitions.Transition2.Fire(ITransitionContext2 context) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\Transitions\Transition.cs:line 87 at Appccelerate.StateMachine.Machine.States.State2.Fire(ITransitionContext2 context) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\States\State.cs:line 222 at Appccelerate.StateMachine.Machine.StateMachine2.Fire(TEvent eventId, Object eventArgument) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\Machine\StateMachine.cs:line 230 at Appccelerate.StateMachine.PassiveStateMachine2.ProcessQueuedEvents() in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\PassiveStateMachine.cs:line 339 at Appccelerate.StateMachine.PassiveStateMachine2.Execute() in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\PassiveStateMachine.cs:line 324 at Appccelerate.StateMachine.PassiveStateMachine2.Fire(TEvent eventId, Object eventArgument) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\PassiveStateMachine.cs:line 177 at Appccelerate.StateMachine.PassiveStateMachine2.Fire(TEvent eventId) in C:\projects\appccelerate\repos\statemachine\source\Appccelerate.StateMachine\PassiveStateMachine.cs:line 163 at JetBrains.ReSharper.UnitTesting.MSTest.Provider.Execution.Wcf.TestExecutorServiceClient.TestConnection(IEnumerable1 dummyTestResults) at SyncInvokeTestConnection(Object , Object[] , Object[] ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) at System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContext request, Boolean cleanThread, OperationContext currentOperationContext) at System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext) at System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult result) at System.ServiceModel.Dispatcher.ChannelHandler.OnAsyncReceiveComplete(IAsyncResult result) at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously) at System.ServiceModel.Channels.TransportDuplexSessionChannel.TryReceiveAsyncResult.OnReceive(IAsyncResult result) at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously) at System.ServiceModel.Channels.SynchronizedMessageSource.ReceiveAsyncResult.OnReceiveComplete(Object state) at System.ServiceModel.Channels.SessionConnectionReader.OnAsyncReadComplete(Object state) at System.ServiceModel.Channels.StreamConnection.OnRead(IAsyncResult result) at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) at System.Net.LazyAsyncResult.Complete(IntPtr userToken) at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken) at System.Net.Security.NegotiateStream.ProcessFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.NegotiateStream.ReadCallback(AsyncProtocolRequest asyncRequest) at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result) at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes) at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously) at System.ServiceModel.Channels.ConnectionStream.IOAsyncResult.OnAsyncIOComplete(Object state) at System.ServiceModel.Channels.PipeConnection.OnAsyncReadComplete(Boolean haveResult, Int32 error, Int32 numBytes) at System.ServiceModel.Channels.OverlappedContext.CompleteCallback(UInt32 error, UInt32 numBytes, NativeOverlapped* nativeOverlapped) at System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32 error, UInt32 bytesRead, NativeOverlapped* nativeOverlapped) at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) ”

有没有人也遇到过这个错误并且知道如何修复它以便我可以再次调试我的单元测试?

提前致谢

我在更新 ReSharper 时遇到了这个错误,原来是与 Microsoft.VisualStudio.TestPlatform 相关的引用 NuGet 包已过时的问题。

创建一个新的测试项目并比较这些程序集的版本,这些程序集将在创建项目时自动添加。

使用版本 14.0.0.1 适用于以下程序集:

  • ReSharper 2017.3.1
  • VS 2017 15.5.3