示例代码:
下面的代码不完整但足以显示我面临的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类型的列表,但它是私有类,因此VSTS创建TestClass_Accessor来访问类功能。 在方法Sum中,它将参数作为“TestClass”类型列表的引用。
我还调试了我的代码,但是
Class1_Accessor.sum(ref lstTestClass, b);
被调试它抛出异常“System.InvalidProgramException:JIT Compiler遇到内部限制”。
当我创建字符串类型列表然后它工作,即列表没有问题。
根据我的理解问题是列表类型。在单元测试中,我们创建类型TestClass_Accessor
的列表。
在班级列表中有List<TestClass>
类型。
请为此提供解决方案。
此致
Nitin Sahu
答案 0 :(得分:0)
我在理解你在说什么时遇到了问题。但... TestClass在您提供的代码中不是私有的。默认情况下,如果未指定访问修饰符,则它是内部的。您可以轻松访问测试中的内部成员。当你消除额外的东西时,你可能不会遇到任何问题(TestClass_Accessor)。
请看这里:How to test Framework if Unit tests are in separate assembly?
和BTW传递参考值时不需要ref
。
答案 1 :(得分:0)
使用“ref”是这里问题的一部分。我遇到了同样的问题,当不使用“ref”关键字时,它就消失了。
Peri已经说过,这里不需要使用ref。