Es scheint, ich habe versucht, alle möglichen Wege, um dies zu erreichen, aber kein Glück. Ich habe einen komplexen Code in DataProvider (es sammelt wirklich Daten in einer komplexen Weise), die ich schließlich von CI parametrisiert werden soll.TestNG: Parameter an DataProvider von Maven übergeben
Die erste Frage hier ist, wie man auch lesen Parameter in DataProvider.
1 Eine Möglichkeit ist, Parameter von testng.xml diese Weise zu erhalten:
String lolo = context.getCurrentXmlTest().getParameter("testcases");
Aber dies das Problem nicht lösen, da XML-Datei dann statisch sein muss, und ich möchte Parameter zu übergeben es von Maven.
2 Der andere Weg ist Parameter von @Factory in meinem Fall zu lesen:
String testCaseDataFilename = (method.getAnnotation(Factory.class)).parameters()[0];
Wo @Factory ist:
@Factory(dataProvider="dataProviderMethod", parameters = {"authentication-testcases.json"})
Es funktioniert auch, aber wieder, löst nicht die Problem, weil jetzt Parameter in Java-Testdateien codiert werden müssen und meine @Factory @DataProvider für sich selbst verwendet und Parameter von Maven nicht implizit empfangen kann.
Zusätzlich habe ich andere Testparameter, die von Maven übergeben werden, aber sie werden nur in @Test-Tests verwendet, nicht in DataProvider, und @BeforeSuite empfängt sie erfolgreich.
Ich werde zu vereinfachen versuchen:
Ich rufe Maven
-Dtestname=signUp -Dmyparam=1 test
und ich möchte, dass meine DataProvider- diesen Wert von Dmyparam zu empfangen und es verwenden, um Daten zu sammeln. Alles, was ich erreicht habe, ist, diese Daten mit @BeforeSuite zu empfangen und global zu setzen, aber das Problem ist, dass DataProvider heißt, bevor die Daten gesetzt werden.
Anstatt param, haben Sie 'System.getProperty (" myparam ")' in Ihrer Fabrik versucht? – juherr
Es sieht so aus, als ob das, was Sie fragen, hier beantwortet wurde: http://stackoverflow.com/questions/13245411/how-to-pass-java-code-a-parameter-from-maven-for-testing – danmitch
@JulienHerr Dieser Kommentar hat meinen Tag gerettet, es funktioniert wirklich, Sie können es als Antwort –