2013-12-11 27 views
0

我有法尚且如此,字符串爲String []在Java中

public void beforeTest(String a, String b, String c, String d) { 
    x = getURL(a, b, c, d); 
    -------- 
    -------- 
} 

我現在想傳遞的String [],而不是單獨的字符串作爲參數的類型,所以嘗試這樣做,

public void beforeTest(String[] args){ 
    x = getURL(a, b, c, d); 
    -------- 
    -------- 
} 

並傳遞了a,b,c,d作爲命令行參數,我的代碼不工作,這是正確的方法嗎?

謝謝大家,我也嘗試使用getURL(參數[0] .......)的做法,不幸的是,我仍然得到了同樣的錯誤,

[TestNG的]配置失敗:@BeforeMethod beforeTest [testng] org.testng.TestNGException:[testng] Method beforeTest需要1個參數,但4個是在@Configuration註釋中提供的。

順便說一句,我的getURL方法的定義如下,

protected String getURL(String a, String b, String c, String d) { 
    if (condition){ 
     return a 
    } else if (condition) { 
     return b 
    } .... 
+2

你有一個args數組參數,但是你不會在你調用getURL()時使用它。那麼,有什麼意義呢?你不想要,「x = getURL(args [0],args [1] ,,,)等等? – OldProgrammer

+1

'getURL(args [0],args [1],args [2],args [3]);' –

+0

使用'getURL(args [0],args [1],args [2],args [3] )'但你可能想在之前做一些檢查,以確保你得到了正確的參數。如果使用'beforeSuite(String ... args)',您不必觸摸客戶端代碼,就可以使用 – clcto

回答

2

試試這個。

String a = args[0]; 
String b = args[1]; 
String c = args[2]; 
String d = args[3]; 

傳遞4個字符串作爲命令行參數是可以的。

1

您可能想改爲使用可變參數。它允許你將輸入視爲一個數組,並且不需要調用者自己創建一個數組。

public void beforeSuite(String... args){ 
    x = getURL(args[0], args[1], args[2], args[3]); 
} 

您可以撥打這個是這樣的:

beforeSuite("test", "test", "test again", "more tests", "even more tests"); 
// Notice how I can specify more than 4 (or less, or equal to 4) strings 
// without changing the method signature 

的主要問題是,雖然訪問的變量:args[0]代替argsargs只是一個數組,但args[0]是數組中的一個值。

0

我認爲這樣做最簡單的辦法是

x = getURL(args); 

這隻會工作,如果getURL被聲明爲getURL(String...)getURL(String[])

0
public void beforeSuite(String[] args){ 
    x = getURL(args[0], args[1], args[2], args[3]); 
    -------- 
    -------- 
} 

但爲什麼不給getUrl與參數類型相似類型的簽名String[]。然後你可以再次通過args調用getUrl(args)。您也可以使用varargs參數:beforeSuite(String... args)getURL(String... args)

0

聲明兩種方法要做你需要的,你必須改變你的方法。

public void beforeSuite(String...args){ 
    x = getURL(args[0], args[1], args[2], args[3]); 
    -------- 
    -------- 
} 

但請記住,這個定義(String...args)上的方法可以有N多的爭論,這意味着如果你傳遞不到4個參數,你會得到一個ArrayIndexOutOfBoundsException。

相關問題