2009-03-20 15 views
0

Tenir compte de l'extrait de code suivant,Générer TestCases pour les méthodes en fonction de sa signature à l'aide CodeDom en C#

Assembly asm = Assembly.LoadFile(DLL_Path); 
Type t = asm.GetType(DLL_NameSpace.MyClass, false, true); 
clsMethodInvoke mi = new clsMethodInvoke(); 
foreach (MemberInfo oMember in t.GetMembers(mi.GetFilter())) 
{ 
           //code here 
} 

Ce sont les valeurs des variables follwing,

t = {Name = "Class1" FullName = "a.Class1"} 
oMember = {Int32 add(Int32, Int32)} 

Maintenant, à partir de ces valeurs i besoin pour générer TestCases à base NUnit comme suit,

[Test()] 
public virtual void Testadd1() { 
    Class1 Class1 = new Class1(); 

    int a = -1; //random values are stored here 
    int b = 2147483647; //random values are stored here 

} 

donc ayant le type de la classe dans une Assemblée je veux générer des cas de test pour chaque méthode, comme montré ci-dessus. Comment puis-je générer de tels cas de test?

Répondre

0

Jetez un oeil à Pex, qui est un outil pour générer des tests unitaires à partir de l'analyse du code.

0

Avez-vous regardé l'utilisation de T4?

Article: http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx

Modèles: http://www.codeplex.com/t4toolbox

Editeur: http://www.visualt4.com/

En ce qui concerne les aspects techniques de la façon de construire le code que je ne suis pas sûr de ce que vous voulez dire quand vous faites référence à:

Assembly asm = Assembly.LoadFile(DLL_Path); 
Type t = asm.GetType(DLL_NameSpace.MyClass, false, true); 
clsMethodInvoke mi = new clsMethodInvoke(); 
foreach (MemberInfo oMember in t.GetMembers(mi.GetFilter())) 
{ 
    string parameters = GetParameters(oMember); 
    string test = String.Format(testTemplate, t.Name, m.Name, parameters); 
    // Feed test string to T4. 
} 

Alors testTemplate serait:

[Test()] 
public virtual void Test{0}{1}() { 
    {0} test{0} = new {0}(); 

    {2} 
} 
+0

pouvez-vous élaborer cette solution ... ne suis pas capable de comprendre cela..am nouveau à codedom – Lijo

Questions connexes