c# - 发生异常 "System.InvalidProgramException: JIT Compiler encountered an internal limitation "

标签 c# visual-studio unit-testing testing jit

示例代码:

下面的代码并不完整,但足以说明我面临的 wt 问题。

namespace ClassLibrary1
{
    class Class1
    {
         internal static void sum(ref List<TestClass> a, int b) 
         {

             //some code

         }
     }

}

同一个程序集中有另一个类

namespace ClassLibrary1 
{
    class TestClass
    { 
         //code

    }

 }

当我为方法 sum 创建单元测试用例时,代码会是这样

[TestMethod()] 
public void sumTest()
{
    List<TestClass_Accessor> lstTestClass = new List<TestClass_Accessor>(); 
    Class1_Accessor.sum(ref lstTestClass, b); 
}

问题:在上面的代码中,我正在创建类型为 TestClass 的列表,但它是私有(private)类,因此 VSTS 创建 TestClass_Accessor 以访问类功能。 在方法 Sum 中,它将参数作为“TestClass”类型列表的引用。

我也调试了我的代码,但是什么时候

Class1_Accessor.sum(ref lstTestClass, b);被调试它抛出异常“System.InvalidProgramException:JIT 编译器遇到内部限制”。

当我创建字符串类型的列表时,它就可以工作了,即列表没有问题。

根据我的理解,问题出在列表类型中。在单元测试中,我们创建类型列表 TestClass_Accessor .

并且在类列表中有类型 List<TestClass> .

请为此提供解决方案。

问候,

尼廷萨胡

最佳答案

我无法理解您在说什么。但... TestClass 在您提供的代码中不是私有(private)的。默认情况下,当未指定访问修饰符时它是内部的。并且您可以轻松地在您的测试中访问内部成员。当你消除额外的东西(TestClass_Accessor)时,也许你不会有任何问题。

看这里:How to test Framework if Unit tests are in separate assembly?

顺便说一句,在传递引用值时,您不需要ref

关于c# - 发生异常 "System.InvalidProgramException: JIT Compiler encountered an internal limitation ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6855188/

相关文章:

使用 Lambda 而不是方法引用的 C# 计时器?

visual-studio - Visual Studio 计划生成触发器

.net - 你使用代码生成工具吗?

java - 如何使用 jUnit 将测试用例添加到套件中?

c# - 如何在 MVC 3 Razor View Engine 中使用 C# 显示和隐藏 Div?

c# - 扩展 WinForm UserControl 基类的正确体系结构?

C# 更新环境变量 - SendMessageTimeout

c++ - 是否有关于更换 MS CRT 的最新引用资料?

python - 如何围绕现有产品构建测试套件?

.net - 我应该在 MVP(或 VM)中对我的 View 进行单元测试,还是如何将 View 中的代码保持在最低限度?