示例代码:
下面的代码并不完整,但足以说明我面临的 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/