2010-11-17 10 views
0

Tous,Passage d'arguments de ligne de commande à JUnit dans Eclipse

Je suis actuellement en train d'utiliser JUnit 4 pour écrire des cas de test. Je suis assez nouveau à JUnit et j'ai du mal à tester ma classe principale qui prend des arguments. J'ai indiqué les arguments à ma JUnit classe de test par:

1> Faites un clic droit JUnit classe de test
2> Aller à Exécuter en tant que -> Exécuter les configurations
3> Sélectionnez l'onglet Arguments et spécifiez une valeur (I sont entrés un argument invalide à savoir la classe principale attend l'argument de ligne de commande à convertir en un int et je passe une valeur de chaîne qui ne peut pas être converti en int)

Cependant, la classe main que je teste, si la ligne de commande l'argument ne peut pas être converti en un int, que je lance IllegalArgumentException. Toutefois, JUnit n'affiche pas la méthode testMain() comme Error ou Failure. Je ne pense pas que ma configuration soit bonne pour la classe JUnit. Quelqu'un peut-il s'il vous plaît me guider là où je me trompe

Répondre

2

Pour tester votre classe principale méthode simplement écrire quelque chose comme:

@Test(expected = IllegalArgumentException.class) 
public void testMainWithBadCommandLine() 
{ 
    YourClass.main(new String[] { "NaN" }); 
} 
1

changer la méthode main() à quelque chose comme ceci:

public static void main(String[] args) 
{ 
    MyClass myclass = new MyClass(args); 
    myclass.go(); 
} 

Déplacer le code qui était en main() à la nouvelle go méthode(). Maintenant, votre méthode de test peut faire:

public void myClassTest() 
{ 
    String[] args = new String[]{"one", "two"}; //for example 
    MyClass classUnderTest = new MyClass(testArgs); 
    classUnderTest.go(); 
} 
0

Tout d'abord les arguments doivent être dans la section des arguments du programme. Normalement, le point de lancement de l'application qui est la méthode principale n'a pas besoin d'être testé si vous concevez l'application pour qu'elle soit testable.

  1. Refactor la classe

    
    public static class ArgumentValidator 
        { 
         public static boolean nullOrEmpty(String [] args) 
         { 
          if(args == null || args.length == 0) 
          { 
           throw new IllegalArgumentException(msg); 
          } 
          //other methods like numeric validations 
         } 
        } 
    
  2. Vous pouvez maintenant tester facilement la méthode nullOrEmpty JUnit comme


@Test(expected = IllegalArgumentException.class) 

    public void testBadArgs() 
    { 
     ArgumentValidator.nullOrEmpty(null); 
    } 

Je pense que cela est une meilleure approche

Questions connexes