我尽量在S.O.的问题中尽可能具体和有帮助。但对于这个,嗯,这几乎没有任何意义,因为我完全没有暗示为什么会发生这种情况的最微弱的线索。
它发生在任何/每个测试(甚至是“空白”测试)。我已经尝试(卸载和)更新统一。 - 没用。
无论如何,这是异常的堆栈跟踪:
2017.11.16 14:54:24.308 ERROR System.Reflection.TargetInvocationException: Uma exceção foi acionada pelo destino de uma chamada.
System.Reflection.TargetInvocationException: Uma exceção foi acionada pelo destino de uma chamada. ---> System.InvalidCastException: Não é possível converter um objeto do tipo 'NUnit.Engine.CallbackHandler' no tipo 'System.Web.UI.ICallbackEventHandler'.
em NUnit.Framework.Api.FrameworkController.LoadTestsAction..ctor(FrameworkController controller, Object handler)
--- Fim do rastreamento de pilha de exceções internas ---
em System.RuntimeMethodHandle._InvokeConstructor(Object[] args, SignatureStruct& signature, IntPtr declaringType)
em System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
em System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
em System.Activator.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo, StackCrawlMark& stackMark)
em System.Activator.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo)
em System.AppDomain.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
em System.AppDomain.CreateInstanceAndUnwrap(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
em NUnit.Engine.Drivers.NUnit3FrameworkDriver.Load(String testAssemblyPath, IDictionary`2 settings)
em NUnit.Engine.Runners.DirectTestRunner.LoadPackage()
em NUnit.Engine.Runners.AbstractTestRunner.Load()
em NUnit.Engine.Runners.MasterTestRunner.LoadPackage()
em NUnit.Engine.Runners.AbstractTestRunner.EnsurePackageIsLoaded()
em NUnit.Engine.Runners.MasterTestRunner.NUnit.Engine.ITestRunner.Explore(TestFilter filter)
em JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.<>c__DisplayClass1.<RunTests>b__0()
em JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.WithExtensiveErrorHandling(IRemoteTaskServer server, Action action)
这使我在过去几天内没有(单元)测试的代码很多,所以如果有人对原因和/或解决方案有任何了解,那将非常感激。
答案 0 :(得分:2)
Resharper使用NUnit引擎运行测试但引擎只支持针对.NET 2.0到4.5编写的测试。您正在使用的框架是.NET Standard版本之一。我可以通过查看堆栈跟踪并看到它没有对System.Web.UI.ICallbackEventHandler的引用来说明这一点。
您应该能够使用最新安装的NUnit 3 VS测试适配器在测试资源管理器中运行测试。
为了清晰起见而更新......
毫无疑问,正在使用平台不支持的nunit框架版本。这是关键所在。
框架的某些版本使用System.Web.UI.ICallbackEventHandler
(.NET 2.0,3.5,4.0和4.5),而其他版本(.NET Standard 1.3和1.6)则不使用scope :order_by_my_association, lambda {
select('comments.*, COUNT(listens.id) AS listens_total')
.joins("LEFT OUTER JOIN listens ON listens.comment_id = comments.id")
.group('comments.id')
.order("listens_total DESC")
}
。由于NUnit正在寻找该接口,因此您将引用其中一个使用它的构建。由于它不可用,因此您使用的平台不包含它。
一个简单的解决方法是让您自己定义界面,完全按照Microsoft的定义复制它。您不必实现它,因为您使用的框架就是这样做的。当然,由于框架/平台不兼容,这可能会导致其他失败,因此最好先解决兼容性问题。
不幸的是,我无法在问题的Unity方面提供任何帮助。