傳遞參數的DataProvider看來我嘗試了所有可能的方式來實現這一點,但沒有運氣。我在DataProvider中有一個複雜的代碼(它真的以複雜的方式收集數據),我希望最終通過CI進行參數化。TestNG的:從Maven的
這裏的第一個問題是如何在DataProvider中甚至讀取參數。
1的一種方法是得到的testng.xml參數是這樣的:
String lolo = context.getCurrentXmlTest().getParameter("testcases");
但是,這並不能解決問題,因爲.xml文件必須是靜態的話,我想傳遞參數它來自Maven。
2另一種方式是在我的情況下讀取@Factory參數:
String testCaseDataFilename = (method.getAnnotation(Factory.class)).parameters()[0];
其中@Factory是:
@Factory(dataProvider="dataProviderMethod", parameters = {"authentication-testcases.json"})
它也能工作,但同樣,沒有解決不了的的問題,因爲現在的參數必須在Java測試文件中harcoded,我@Factory使用@dataProvider的本身,它不能從Maven的接收參數含蓄。
此外,我還有其他的測試參數,由Maven的過去了,但他們在@Test測試,而不是隻DataProvider的使用,@BeforeSuite成功接收它們。
我會盡量簡化:
我打電話行家
-Dtestname=signUp -Dmyparam=1 test
,我想我的DataProvider接收Dmyparam的這個值,並用它來收集數據。我所取得的接收與@BeforeSuite這個數據和全球設置它,但問題是dataProvider是叫之前設置的數據。
相反PARAM的,你有沒有嘗試'System.getProperty( 「myparam」)在您的工廠'? – juherr
它看起來像你問已經在這裏找到答案: http://stackoverflow.com/questions/13245411/how-to-pass-java-code-a-parameter-from-maven-for-testing – danmitch
@JulienHerr此評論救了我的一天,它真的有用,U可以發佈它作爲一個aswer –