无法通过控制台运行我的 SpecFlow 功能代码

Posted

技术标签:

【中文标题】无法通过控制台运行我的 SpecFlow 功能代码【英文标题】:Unable to run my SpecFlow features code through Console 【发布时间】:2021-12-12 14:34:05 【问题描述】:

我是 SpecFlow 的初学者。我无法通过控制台文件运行 SpecFlow 功能。

我的 NUnit 版本:

NUnit - 3.13.1 NUnit3TestAdapter - 3.17.0 NUnit.ConsoleRunner - 3.11.1 NUnit.Console - 3.11.1

C:\Users\.nuget\packages\nunit.consolerunner\3.11.1\tools>nunit3-console.exe D:\automation\bin\Debug\netcoreapp3.1\automation.dll
NUnit Console Runner 3.11.1 (.NET 2.0)
Copyright (c) 2020 Charlie Poole, Rob Prouse
27 October 2021 10:43:34

Runtime Environment
OS Version: Microsoft Windows NT 6.2.9200.0
Runtime: .NET Framework CLR v4.0.30319.42000

Test Files

D:\automation\bin\Debug\netcoreapp3.1\automation.dll

Errors, Failures and Warnings

1) Error :
NUnit.Engine.NUnitEngineException : The NUnit 3 driver encountered an error while executing reflected code.
----> System.InvalidCastException : Unable to cast transparent proxy to type 'System.Web.UI.ICallbackEventHandler'.
--NUnitEngineException
The NUnit 3 driver encountered an error while executing reflected code.

Server stack trace:
at NUnit.Engine.Drivers.NUnit3FrameworkDriver.CreateObject(String typeName, Object[] args)
at NUnit.Engine.Drivers.NUnit3FrameworkDriver.Load(String testAssemblyPath, IDictionary`2 settings)
at NUnit.Engine.Runners.DirectTestRunner.LoadDriver(IFrameworkDriver driver, String testFile, TestPackage subPackage)
at NUnit.Engine.Runners.DirectTestRunner.LoadPackage()
at NUnit.Engine.Runners.DirectTestRunner.EnsurePackageIsLoaded()
at NUnit.Engine.Runners.DirectTestRunner.RunTests(ITestEventListener listener, TestFilter filter)
at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)

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 NUnit.Engine.ITestEngineRunner.Run(ITestEventListener listener, TestFilter filter)
at NUnit.Engine.Runners.ProcessRunner.RunTests(ITestEventListener listener, TestFilter filter)
--
InvalidCastException
Unable to cast transparent proxy to type 'System.Web.UI.ICallbackEventHandler'.
at NUnit.Framework.Api.FrameworkController.LoadTestsAction..ctor(FrameworkController controller, Object handler)

Test Run Summary
Overall result: Failed
Test Count: 0, Passed: 0, Failed: 0, Warnings: 0, Inconclusive: 0, Skipped: 0
Start time: 2021-10-27 05:13:36Z
End time: 2021-10-27 05:13:44Z
Duration: 7.759 seconds

Results (nunit3) saved as TestResult.xml

你能帮忙吗?

谢谢。

【问题讨论】:

【参考方案1】:

NUnit3 Console Runner 还不能运行 .NET Core 测试。运行 netcoreapp3.1 目标测试的选项有:

    使用单独提供的包 `NUnit.ConsoleRunner.NetCore 运行 使用 NUnit3 适配器在 Visual Studio 测试资源管理器下运行 使用 NUnit3 适配器在 vstest.exe 下运行 使用 NUnitLite 运行 使用 NUnit 的 TestCentric GUI 运行。

请注意,选项 1 仅作为测试版提供。 NUnit3 控制台运行器的未来版本将能够混合运行 .NET Framework 和 .NET Core 测试。

【讨论】:

使用 vstest 运行测试时抛出异常调用执行器“executor://specrun/executorV3.9.7”时发生异常:调用目标已抛出异常。 堆栈跟踪:在 System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,Boolean publicOnly,Boolean wrapExceptions,Boolean& canBeCached,RuntimeMethodHandleInternal& ctor,Boolean& hasNoDefaultCtor) 在 System.RuntimeType.CreateInstanceDefaultCtorSlow(Boolean publicOnly,Boolean wrapExceptions,Boolean fillCache) 在 System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, Boolean wrapExceptions) 在 System.Activator.CreateInstance(Type type, Boolean nonPublic, Boolean wrapExceptions) 其他 SO 用户可能需要有关在 nunit3-console 下运行 .NET Core 测试的答案。最好开始一个新问题,包含有关在 vstest.exe 下运行的完整信息。您应该包括版本信息和您在该问题中使用的任何 .runsettings。

以上是关于无法通过控制台运行我的 SpecFlow 功能代码的主要内容,如果未能解决你的问题,请参考以下文章

在“添加新项目”窗口中找不到 SpecFlow 功能文件选项 - VS20019

SpecFlow 测试无法使用 Playwright.NET 运行

如何为所有 SpecFlow 功能重新生成设计器代码

如何教 SpecFlow 向我的测试类添加额外的 NUnit 属性

无法从 VS10 卸载 SpecFlow 插件

在 TFS 构建中运行 Specflow 测试