2
運行測試代碼時出現以下錯誤。如何解決該問題?我正在使用Visual Studio 2010 Premium的內置MStest。被測試無法強制List`1 [MyClass]'鍵入List`1 [MyClass_Accessor]'?
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_Accessor是否繼承自MyClass?目前,您正在嘗試將蘋果列表作爲橙子列表進行投放。即使MyClass_Accessor:MyClass,也不能轉換爲列表(因爲它具有讀/寫屬性)請查看C#4的「in」和「out」關鍵字以獲取更多關於鑄造,同向和反向變化的信息。 – James 2012-07-12 17:36:33
代碼投到'List'?該演員陣容是不可能的,不支持一般差異。 –
CodesInChaos
2012-07-12 17:46:23
看起來你需要審查,也許修復(生成?)訪問器。您是否在生成第一個測試用例之後更改了接口? – 2012-07-12 18:58:17