我有一个带有xUnit的.NET Core项目。我不能再使用Resharper进行任何测试了。即使非常简单的测试也是不确定的。 e.g:
using Xunit;
public class MyTests
{
[Fact]
public void MySuperTest()
{
Assert.Equal(1, 1);
}
}
输出日志显示异常:
2017.08.04 16:58:41.304 INFO BuildStage started
2017.08.04 16:58:41.304 INFO Build policy: Automatic
2017.08.04 16:58:42.636 INFO 1 projects built
2017.08.04 16:58:42.636 VERBOSE Computershare.AssetManagement.Testing
2017.08.04 16:58:42.637 INFO BuildStage completed
2017.08.04 16:58:42.638 INFO RefreshProjectPropertiesStage started
2017.08.04 16:58:42.638 INFO RefreshProjectPropertiesStage completed
2017.08.04 16:58:42.640 INFO DiscoveryStage started
2017.08.04 16:58:42.641 INFO Test exploration required for 1 projects
2017.08.04 16:58:42.641 VERBOSE Computershare.AssetManagement.Testing
2017.08.04 16:58:42.643 INFO DiscoveryStage completed
2017.08.04 16:58:42.643 INFO BuildPipelineStage started
2017.08.04 16:58:42.643 INFO BuildPipelineStage completed
2017.08.04 16:58:42.643 INFO ApplyRulesStage started
2017.08.04 16:58:42.647 INFO Got 1 elements (1 explicit) to run
2017.08.04 16:58:42.647 INFO Marking 1 elements as Pending
2017.08.04 16:58:42.679 INFO Marking elements as Pending completed
2017.08.04 16:58:42.679 INFO Distributing 1 elements into runs
2017.08.04 16:58:42.695 INFO Host Controller initialization started
2017.08.04 16:58:42.695 VERBOSE Host Controller: DebugTaskRunnerHostController
2017.08.04 16:58:42.695 INFO Host Controller initialization completed
2017.08.04 16:58:42.721 INFO Distributing elements completed
2017.08.04 16:58:42.721 INFO Created 1 unit-test runs
2017.08.04 16:58:42.721 INFO ApplyRulesStage completed
2017.08.04 16:58:42.721 INFO RunTestsStage started
2017.08.04 16:58:42.722 VERBOSE Running up to 1 unit-test runs in parallel
2017.08.04 16:58:42.727 INFO Run: 28147df6-3156-4f24-bd5a-ca737ab6c43a - Started
2017.08.04 16:58:42.728 VERBOSE Provider: xUnit.net
Project: Computershare.AssetManagement.Testing
Target Framework: .NETCoreApp,Version=v1.1
Strategy: JetBrains.ReSharper.UnitTestFramework.DotNetCore.DotNetVsTest.DotNetVsTestRunStrategy
Runtime Enviroment:
Platform Type: x64
Platform Version: v4_0
2017.08.04 16:58:42.747 TRACE Register handler for message type 'TestSession.Message', protocol version '1'
2017.08.04 16:58:42.747 TRACE Register handler for message type 'ProtocolVersion', protocol version '<unset>'
2017.08.04 16:58:42.747 TRACE Register handler for message type 'TestSession.Connected', protocol version '<unset>'
2017.08.04 16:58:42.747 TRACE Register handler for message type 'TestExecution.CustomTestHostLaunch', protocol version '1'
2017.08.04 16:58:42.748 TRACE Register handler for message type 'TestExecution.Completed', protocol version '1'
2017.08.04 16:58:42.748 TRACE Register handler for message type 'TestExecution.StatsChange', protocol version '1'
2017.08.04 16:58:42.750 INFO Starting process: dotnet vstest /port:47441
2017.08.04 16:58:42.754 INFO Started process with pid 12856
2017.08.04 16:58:43.266 TRACE Processing message 'TestSession.Connected'
2017.08.04 16:58:43.266 TRACE Processed message 'TestSession.Connected'
2017.08.04 16:58:43.272 TRACE Processing message 'ProtocolVersion'
2017.08.04 16:58:43.274 INFO Using test adapter: ...PROJECT PATH REMOVED...\bin\Debug\netcoreapp1.1\xunit.runner.visualstudio.dotnetcore.testadapter.dll
2017.08.04 16:58:43.274 WARN File ...PROJECT PATH REMOVED...\bin\Debug\netcoreapp1.1\xunit.runner.visualstudio.dotnetcore.testadapter.dll does not exist on disk
2017.08.04 16:58:43.304 ERROR Transition failed: Transition from state <HandShake> on event <remote::.ProtocolVersion>. Cause: System.InvalidOperationException: Test-cases are missing for the selected tests. Did discovery succeed? at JetBrains.ReSharper.UnitTestFramework.DotNetCore.DotNetVsTest.DotNetVsTestExecution.SendGetProcessStartInfo() at Appccelerate.StateMachine.Machine.ActionHolders.ArgumentLessActionHolder.Execute(Object argument) at Appccelerate.StateMachine.Machine.States.State`2.ExecuteEntryAction(IActionHolder actionHolder, ITransitionContext`2 context)
--- EXCEPTION #1/1 [LoggerException]
Message = “
Transition failed: Transition from state <HandShake> on event <remote::.ProtocolVersion>.
Cause: System.InvalidOperationException: Test-cases are missing for the selected tests. Did discovery succeed?
at JetBrains.ReSharper.UnitTestFramework.DotNetCore.DotNetVsTest.DotNetVsTestExecution.SendGetProcessStartInfo()
at Appccelerate.StateMachine.Machine.ActionHolders.ArgumentLessActionHolder.Execute(Object argument)
at Appccelerate.StateMachine.Machine.States.State`2.ExecuteEntryAction(IActionHolder actionHolder, ITransitionContext`2 context)
”
ExceptionPath = Root
ClassName = JetBrains.Util.LoggerException
HResult = COR_E_APPLICATION=80131600
StackTraceString = “
at JetBrains.ReSharper.UnitTestFramework.DotNetCore.DotNetVsTest.DotNetVsTestProtocol.<.ctor>b__e(Object sender, TransitionExceptionEventArgs`2 args)
at Appccelerate.StateMachine.Machine.StateMachine`2.RaiseEvent[T](EventHandler`1 eventHandler, T arguments, ITransitionContext`2 context, Boolean raiseEventOnException)
at Appccelerate.StateMachine.Machine.StateMachine`2.OnExceptionThrown(ITransitionContext`2 context, Exception exception)
at Appccelerate.StateMachine.Machine.Contexts.TransitionContext`2.OnExceptionThrown(Exception exception)
at Appccelerate.StateMachine.Machine.States.State`2.HandleException(Exception exception, ITransitionContext`2 context)
at Appccelerate.StateMachine.Machine.States.State`2.HandleEntryActionException(ITransitionContext`2 context, Exception exception)
at Appccelerate.StateMachine.Machine.States.State`2.ExecuteEntryAction(IActionHolder actionHolder, ITransitionContext`2 context)
at Appccelerate.StateMachine.Machine.States.State`2.ExecuteEntryActions(ITransitionContext`2 context)
at Appccelerate.StateMachine.Machine.States.State`2.Entry(ITransitionContext`2 context)
at Appccelerate.StateMachine.Machine.States.State`2.EnterShallow(ITransitionContext`2 context)
at Appccelerate.StateMachine.Machine.States.State`2.EnterHistoryNone(ITransitionContext`2 context)
at Appccelerate.StateMachine.Machine.States.State`2.EnterByHistory(ITransitionContext`2 context)
at Appccelerate.StateMachine.Machine.Transitions.Transition`2.Fire(ITransitionContext`2 context)
at Appccelerate.StateMachine.Machine.States.State`2.Fire(ITransitionContext`2 context)
at Appccelerate.StateMachine.Machine.StateMachine`2.Fire(TEvent eventId, Object eventArgument)
at Appccelerate.StateMachine.PassiveStateMachine`2.ProcessQueuedEvents()
at Appccelerate.StateMachine.PassiveStateMachine`2.Execute()
at Appccelerate.StateMachine.PassiveStateMachine`2.Fire(TEvent eventId, Object eventArgument)
at JetBrains.ReSharper.UnitTestFramework.DotNetCore.Channel.DotNetCoreMessageListener.<>c__DisplayClass2`1.<RegisterMessage>b__1(JToken payload)
at JetBrains.ReSharper.UnitTestFramework.DotNetCore.Channel.DotNetCoreMessageListener.OnMessage(String rawMessage)
at JetBrains.ReSharper.UnitTestFramework.DotNetCore.Channel.DotNetCoreRemoteChannel.ReaderThreadProc()
at JetBrains.ReSharper.TaskRunnerFramework.RemoteChannelBase.<Start>b__0(Object _)
at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
”
2017.08.04 16:58:43.306 ERROR Run: 28147df6-3156-4f24-bd5a-ca737ab6c43a - Faulted
2017.08.04 16:58:43.306 ERROR System.AggregateException: One or more errors occurred. ---> System.InvalidOperationException: Test-cases are missing for the selected tests. Did discovery succeed?
at JetBrains.ReSharper.UnitTestFramework.DotNetCore.DotNetVsTest.DotNetVsTestExecution.SendGetProcessStartInfo()
at Appccelerate.StateMachine.Machine.ActionHolders.ArgumentLessActionHolder.Execute(Object argument)
at Appccelerate.StateMachine.Machine.States.State`2.ExecuteEntryAction(IActionHolder actionHolder, ITransitionContext`2 context)
--- End of inner exception stack trace ---
at JetBrains.ReSharper.UnitTestFramework.Launch.Stages.RunTestsStage.<>c__DisplayClassc.<StartSingleRun>b__8()
---> (Inner Exception #0) System.InvalidOperationException: Test-cases are missing for the selected tests. Did discovery succeed?
at JetBrains.ReSharper.UnitTestFramework.DotNetCore.DotNetVsTest.DotNetVsTestExecution.SendGetProcessStartInfo()
at Appccelerate.StateMachine.Machine.ActionHolders.ArgumentLessActionHolder.Execute(Object argument)
at Appccelerate.StateMachine.Machine.States.State`2.ExecuteEntryAction(IActionHolder actionHolder, ITransitionContext`2 context)<---
2017.08.04 16:58:43.306 TRACE Processed message 'ProtocolVersion'
2017.08.04 16:58:43.306 INFO RunTestsStage completed
2017.08.04 16:58:43.307 INFO Finishing run
2017.08.04 16:58:43.316 INFO Run is finished
我的Nuget导入是:
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="1.1.2" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
<PackageReference Include="Microsoft.NETCore.Portable.Compatibility" Version="1.0.1" />
<PackageReference Include="System.Runtime.InteropServices.WindowsRuntime" Version="4.3.0" />
<PackageReference Include="System.ServiceModel.Http" Version="4.3.0" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.console" Version="2.2.0" />
</ItemGroup>
答案 0 :(得分:9)
错误在于我选择要导入的Nuget包。
而不是:
<PackageReference Include="xunit.runner.console" Version="2.2.0" />
我应该有:
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
在此之后,您可能需要重建或关闭Visual Studio。
答案 1 :(得分:1)
对我而言,我的xUnit测试不会在.NET核心2.0测试项目中运行的原因完全不同。
我看到的错误如下:
Cause: System.InvalidOperationException: Test-cases are missing for the selected tests. Rebuild the project and try again.
和
// Display Fields using WooCommerce Action Hook
add_action( 'woocommerce_product_options_discount_info', 'wc_general_product_data_custom_field' );
function wc_general_product_data_custom_field() {
// Number Field
woocommerce_wp_text_input( array(
'id' => '_discount_info',
'label' => __( 'Discount %', 'woocommerce' ),
'desc_tip' => 'true',
'description' => __( 'Enter the % discount here.', 'woocommerce' ),
'type' => 'number',
'custom_attributes' => array(
'min' => '1',
'step' => '1',
),
) );
}
// Hook to save the data value from the custom fields
add_action( 'woocommerce_process_product_meta', 'wc_save_general_proddata_custom_field' );
/** Hook callback function to save custom fields information */
function wc_save_general_proddata_custom_field( $post_id ) {
// Save Number Field
$number_field = isset( $_POST['_discount_info'] ) ? $_POST['_discount_info'] : '';
if( ! empty( $number_field ) ) {
update_post_meta( $post_id, '_discount_info', $number_field );
}
}
这是由测试类构造函数中的一些失败代码引起的(我正在为.NET核心2.0连接一些用户机密)。修复此代码后,我就可以从ReSharper测试运行器运行测试。
答案 2 :(得分:0)
将Resharper更新到最新版本(2020.2)可以帮助我进行测试,