[英]Cannot cast List`1[MyClass]' to type List`1[MyClass_Accessor]'?
运行测试代码时出现以下错误。 如何解决该问题? 我正在使用Visual Studio 2010 Premium的内置MStest。
Test method TestProgram.myProgramTest.GetTypeListTest threw exception: System.InvalidCastException: Unable to cast object of type 'System.Collections.Generic.List`1[MyProgram.MyClass]' to type 'System.Collections.Generic.List`1[MyProgram.MyClass_Accessor]'.
测试方法:
public class MyProjectClass {
private List<MyClass> GetTypeList()
{ ....
}
}
class MyClass {....} // A POCO class
测试代码(大多数代码由Visual Studio自动生成):
[TestMethod()]
[DeploymentItem("myProgram.exe")]
public void GetTypeListTest()
{
MyProjFile_Accessor target = new MyProjFile_Accessor ();
var actual = target.GetTypeList();
Assert.IsTrue(actual.Count > 2);
}
我真的不知道为什么这个问题被否决了两次,所有其他代码要么与问题无关,要么由Visual Studio自动生成
这是非常简单的类定义。 测试夹具是使用VS 2010向导创建的。 只需返回MyClass
的方法即可通过测试。 问题是返回类型为List<MyClass>
。
MyClass
类没有访问修饰符,默认情况下C#使用internal
访问修饰符。
内部意味着该类只能在其程序集中访问。
单元测试通常在单独的程序集中实现,不能使用MyClass
。
MS Tests生成的MyClass_Accessor
类实际上是一个包装,该包装使用反射提供对类本身及其方法的访问。
将声明更改为public class MyClass {....}
然后重新生成单元测试(这是告诉MS Test _Accessor
类的必要步骤)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.