繁体   English   中英

无法将List`1 [MyClass]'强制转换为List`1 [MyClass_Accessor]'类型?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM