2010-03-03 19 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(){ 最終線程的線程=新主題(){ 公共無效的run() {

  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 THAT啓動應用GUI:RunAppli .setupOnce(); 我得到了xml文件的路徑: RunAppli .path 我們應該在函數中使用@Test嗎? 任何暗示? 謝謝

+2

具體。而不是「不起作用」,說出實際發生的事情,以及你期望發生的事情,以及你正在做的事情。另外,您的縮進出錯了,您可以編輯它嗎? – 2010-03-03 12:17:56

+0

@lamisse你應該接受一個答案,如果它適合你。 – Bozho 2010-03-06 19:28:52

回答

0

我假設你的問題是沒有執行startappli.setupOnce()

我認爲這是因爲startappli不包含@Test方法,因此JUnit不會將其作爲測試類。因此省略@BeforeClass,並且該功能不由JUnit執行。

一個解決方案可能是將@Test方法放在這個類中。或者,如果您希望在每個Java測試方法之前調用它,則應該在每個測試類中從@Before方法明確調用它(或者如果您希望它爲每個測試類運行一次,請從@BeforeClass方法中明確調用)。

注意:startappli不是Java類的好名字,因爲約定是類名應該是駱駝大小寫,例如, StartAppli

0

你正在做的一些事情錯了(實際上 - 所有)

  1. Java Naming Conventions說,類名應該是大寫

  2. 要調用testmain()main(),而方法是駝峯格式 - testMain()

  3. 您不應該在JUnit的新線程中運行main方法。一個JUnit運行者負責實例化。

  4. 您的測試類應該執行測試 - 即它應該有標註有@Test

我建議在開始之前閱讀JUnit manual的方法。