2010-03-03 7 views
0

comment créer des fonctions génériques qui pourraient être appelées à partir de chaque test java? Dans ma fonction startappli je:junit4 fonctions

public class startappli{ 

public void testMain (String[] args) 
{ 

    String[] logInfos = new String[3]; 
    logInfos[0] = (String) args[0]; 
    logInfos[1] = (String) args[1]; 
} 
    @BeforeClass 
    public static void setupOnce() { 
     final Thread thread = new Thread() { 
      public void run() { 

      entrypointtoGUI.main(new String[]{"arg0 ", "arg1"}); 

      } 
     }; 
     try { 
      thread.start(); 
     } catch (Exception ex) { 

     } 
    } 

} 

dans le toto.java, j'appelle la fonction comme suit: startappli.testmain (loginfo) il ne fonctionne pas aide?


ma fonction: Runner.java contient: public class RunAppli {

@BeforeClass setupOnce public static void() { fil de discussion final = new Thread() { public void run() {

  Main.main(new String[]{"-rtebase ", "C:\\bin"}); 

     } 
    }; 
    try { 
     thread.start(); 
    } catch (Exception ex) { 

    } 
} 

@Test public void Test() {

URL path = this.getClass().getResource("../Tester/map.xml"); 


    System.out.println("Cover: " + cmapURL); 




    } 

} 

}
et à partir de mon test java TestDemo.java, j'appelle StartAppli QUI lance l'interface utilisateur graphique: RunAppli .setupOnce(); et je reçois le chemin d'accès au fichier xml: RunAppli .path devrions-nous utiliser @Test dans les fonctions? une suggestion? merci

+2

Soyez spécifique. Plutôt que «ça ne marche pas», dites ce qui s'est réellement passé, et ce que vous attendiez et ce que vous essayez de faire. En outre, votre indentation a mal tourné, pouvez-vous l'éditer? –

+0

@lamisse vous êtes censé accepter une réponse si cela vous convient. – Bozho

Répondre

0

Je suppose que votre problème est que startappli.setupOnce() n'est pas exécuté.

Je crois que c'est parce que startappli ne contient pas de méthodes @Test, donc JUnit ne le prend pas comme une classe de test. Ainsi, @BeforeClass est omis et la fonction n'est pas exécutée par JUnit.

Une solution pourrait être de mettre une méthode @Test dans cette classe. Ou, si vous voulez qu'il soit appelé avant chaque méthode de test Java, vous devez l'appeler explicitement à partir des méthodes @Before dans chacune de vos classes de test (ou à partir des méthodes @BeforeClass si vous ne voulez l'exécuter qu'une seule fois pour chaque classe de test).

Remarque:startappli n'est pas un bon nom pour une classe Java, car la convention est que les noms de classe doivent être des noms de classe, par exemple: StartAppli.

0

Vous faites un certain nombre de choses mal (en fait - tous)

  1. Le Java Naming Conventions disent que les noms de classe doivent être en majuscules

  2. Vous appelez testmain() et main() alors que la méthode est notationCamel - testMain().

  3. Vous ne devez pas exécuter une méthode principale dans un nouveau thread avec JUnit. Un coureur JUnit s'occupe de l'instanciation.

  4. Votre centre d'essais doit effectuer des tests - par ex.il doit avoir une méthode annotée avec @Test

Je vous suggère de lire la JUnit manual avant de commencer.