NUnit错误:" FrameworkName不能少于两个组件或多于三个组件"

时间:2018-01-26 10:40:35

标签: c# .net nunit resharper

我正在使用:

  • Visual Studio 2017 v15.5.4
  • NUnit 3.9.0
  • NUnit Test Adapter 3.9.0
  • Resharper 2017.3
  • .Net 4.7项目

尝试调试NUnit测试时会出现随机异常:

首先是:

  

托管调试助手' BindingFailure' :'装配有   显示名称' Microsoft.VisualStudio.QualityTools.VideoRecorderEngine'   未能加载'加载'使用ID绑定AppDomain的上下文   1.失败的原因是:System.BadImageFormatException:无法加载文件或程序集   ' Microsoft.VisualStudio.QualityTools.VideoRecorderEngine'或者其中之一   它的依赖关系。该模块预计包含一个程序集   。舱单'

其次是:

  

System.BadImageFormatException:'无法加载文件或程序集   ' Microsoft.VisualStudio.QualityTools.VideoRecorderEngine'或者其中之一   它的依赖关系。该模块预计包含一个程序集   。舱单'

  

托管调试助手' BindingFailure' :'装配有   显示名称' VSTestVideoRecorder'未能加载'加载'   AppDomain的绑定上下文ID为1.失败的原因   was:System.BadImageFormatException:无法加载文件或程序集   ' VSTestVideoRecorder'或其中一个依赖项。一次尝试   加载格式不正确的程序。'

在一些情况下继续出现相关的例外情况:

  

托管调试助手' LoadFromContext' :'名为的程序集   ' nunit.engine.api'装满了   '文件:/// C:/用户/ [用户名] /AppData/Local/Temp/VisualStudioTestExplorerExtensions/NUnit3TestAdapter.3.9.0/build/net35/nunit.engine.api.DLL'   使用LoadFrom上下文。使用此上下文可能会导致   序列化,转换和依赖的意外行为   解析度。在几乎所有情况下,建议使用LoadFrom   避免上下文。这可以通过在中安装程序集来完成   全局程序集缓存或在ApplicationBase目录中使用   Assembly.Load在显式加载程序集时。'

  

托管调试助手' LoadFromContext' :'名为的程序集   ' Mono.Cecil能做到'装满了   '文件:/// C:/用户/ [用户名] /AppData/Local/Temp/VisualStudioTestExplorerExtensions/NUnit3TestAdapter.3.9.0/build/net35/Mono.Cecil.DLL'   使用LoadFrom上下文。使用此上下文可能会导致   序列化,转换和依赖的意外行为   解析度。在几乎所有情况下,建议使用LoadFrom   避免上下文。这可以通过在中安装程序集来完成   全局程序集缓存或在ApplicationBase目录中使用   Assembly.Load在显式加载程序集时。'

最后:

  

System.ArgumentException:' FrameworkName不能少于两个   组件或三个以上的组件。参数名称:   frameworkName'

之后我可以调试我的测试,但是有新的随机异常  当我在调试视图中传递一个集合时:

  

System.ArgumentNullException:'值不能为null。参数名称:   收集'

使用Stracktrace:

  

在System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument)   论证)   的 System.Collections.Generic.Mscorlib_CollectionDebugView 1..ctor(ICollection 1   集合)

3 个答案:

答案 0 :(得分:0)

转到“测试”->“测试设置”->“默认处理器体系结构”。确保这符合您当前的系统架构,即如果您的计算机是64位,则将其设置为X64,反之亦然:

enter image description here

答案 1 :(得分:0)

AFAIK,这是一个错误。 Here据说这将在VS 15.8预览版3中得到解决。

答案 2 :(得分:0)

我在15.9.11版中仍然遇到此问题。 following workaround from the bug thread为我工作:

  
      
  1. 在“异常设置”窗口中明确启用抛出ArgumentException时的中断
  2.   
  3. 调试单元测试,等待调试器由于FrameworkName中断(因为它是ArgumentException)。
  4.   
  5. 使用调试器中的“抛出异常”窗口并检查设置为“抛出时除外:System.dll”,所以,我们告诉调试器   抛出System.dll时忽略ArgumentException。
  6.   
     

Exception popup