2010-03-03 6 views
0

как создать общие функции, которые можно было бы вызывать из каждого теста Java? В моей функции startappli у меня есть:junit4 функции

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) { 

     } 
    } 

} 

в toto.java, я вызываю функцию следующим образом: startappli.testmain (LOGINFO) это не работает помощь?


моя функция: Runner.java содержит: общественного класса RunAppli {

@BeforeClass государственной статической силы setupOnce() { окончательный поток Thread = новый Thread() { общественного недействительными запуска() {

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

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

    } 
} 

@Test общественности недействительным тест() {

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


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




    } 

} 

}
и от моего Java теста TestDemo.java, я называю StartAppli которые запускают приму GUI: RunAppli .setupOnce(); и я получаю путь к файлу xml: RunAppli .path следует ли использовать функцию @Test в функциях? любое предложение? спасибо

+2

Будьте конкретным. Вместо того, чтобы «это не работает», скажите, что на самом деле произошло, и что вы ожидали, и что вы пытаетесь сделать. Кроме того, ваш отпечаток поступил неправильно, можете ли вы его отредактировать? –

+0

@lamisse, вы должны принять ответ, если он вам подходит. – Bozho

ответ

0

Я предполагаю, что ваша проблема в том, что startappli.setupOnce() не выполняется.

Я считаю, что это потому, что startappli не содержит методов @Test, поэтому JUnit не воспринимает его как тестовый класс. Таким образом, @BeforeClass опущен и функция не выполняется JUnit.

Решение может быть связано с методом @Test. Или, если вы хотите, чтобы он был вызван перед каждым тестовым методом Java, вы должны явно его вызывать из методов @Before в каждом из ваших тестовых классов (или из методов @BeforeClass, если вы хотите, чтобы он запускался только один раз для каждого тестового класса).

Примечание:startappli не является хорошим именем для класса Java, поскольку конвенция заключается в том, что имена классов должны быть верблюжьим корпусом, например. StartAppli.

0

Вы делаете ряд вещей неправильно (на самом деле - все)

  1. Java Naming Conventions говорят, что имена классов должны быть в верхнем регистре

  2. Вы звоните testmain() и main() в то время как метод camelCased - testMain().

  3. Вы не должны запускать основной метод в новом потоке с помощью JUnit. Бегун JUnit заботится об экземпляре.

  4. Ваш тестовый класс должен выполнять тесты - т. Е.он должен иметь метод с аннотацией @Test

Я предлагаю чтение JUnit manual перед началом работы.

Смежные вопросы