J'ai l'erreur suivante lors de l'exécution du code de test. Comment contourner le problème? J'utilise le MStest intégré de Visual studio 2010 Premium.Impossible de lancer List`1 [MyClass] 'pour taper 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]'.
Méthode à tester:
public class MyProjectClass {
private List<MyClass> GetTypeList()
{ ....
}
}
class MyClass {....} // A POCO class
Code d'essai (la plupart du code est automatiquement généré par Visual Studio):
[TestMethod()]
[DeploymentItem("myProgram.exe")]
public void GetTypeListTest()
{
MyProjFile_Accessor target = new MyProjFile_Accessor();
var actual = target.GetTypeList();
Assert.IsTrue(actual.Count > 2);
}
Je ne sais vraiment pas pourquoi question a été votée deux fois, tout autre code est soit sans rapport avec le problème ou généré automatiquement par Visual Studio
C'est une définition de classe assez simple. Et l'appareil de test a été créé à l'aide de l'assistant VS 2010. La méthode juste retour MyClass
peut passer le test. Le problème est la méthode avec le type de retour de List<MyClass>
.
Est-ce que MyClass_Accessor hérite de MyClass? Actuellement, vous essayez de prendre une liste de pommes et de la lancer comme une liste d'oranges. Même si MyClass_Accessor: MyClass, vous ne pouvez pas convertir en une liste (comme il a des propriétés en lecture/écriture) Regardez les mots-clés 'in' et' out' de C# 4 pour plus d'informations sur le casting, la co- et contra-variance – James
code jamais jeté à 'List'? Cette distribution n'est pas possible, ne supporte pas la variance générique. –
CodesInChaos
On dirait que vous avez besoin d'examiner et peut-être réparer l'accesseur (généré?). Avez-vous modifié les interfaces _après_ la génération des premiers cas de test? –