Ich versuche, mit einem JUnit-Test aus einer Java-Klasse ausgeführt wird:Pass Befehlszeilenargumente zu JUnit-Testfall werden ausgeführt programmatisch
JUnitCore core = new JUnitCore();
core.addListener(new RunListener());
core.run(classToRun);
Problem ist mein JUnit-Test erfordert eine Datenbankverbindung, die derzeit in der fest einprogrammiert wird JUnit Test selbst.
Was ich suche ist eine Möglichkeit, den JUnit-Test programmgesteuert (oben) auszuführen, aber eine Datenbankverbindung zu übergeben, die ich in meiner Java-Klasse erstellen, die den Test ausführt, und nicht innerhalb der JUnit-Klasse fest codiert.
Im Grunde so etwas wie
JUnitCore core = new JUnitCore();
core.addListener(new RunListener());
core.addParameters(java.sql.Connection);
core.run(classToRun);
Dann im classToRun:
@Test
Public void Test1(Connection dbConnection){
Statement st = dbConnection.createStatement();
ResultSet rs = st.executeQuery("select total from dual");
rs.next();
String myTotal = rs.getString("TOTAL");
//btw my tests are selenium testcases:)
selenium.isTextPresent(myTotal);
}
Ich weiß um die @Parameter, aber es scheint hier nicht anwendbar, da es mehr für den Betrieb den gleichen Tests ist Fall mehrfach mit unterschiedlichen Werten. Ich möchte, dass alle meine Testfälle eine Datenbankverbindung teilen, die ich über eine Konfigurationsdatei an meinen Java-Client übergebe, der dann diese Testfälle ausführt (die auch über die Konfigurationsdatei übertragen werden).
Ist das möglich?
P.S. Ich verstehe, dass dies eine seltsame Art ist, Dinge zu tun.
Die Methoden System.set/getProperty() waren ausreichend, um Variablen an die laufenden Testklassen zu übergeben. Vielen Dank! –
Wenn Sie Argumente auf diese Weise übergeben -Docverbstring = foobar. Wie können Sie sie in Laufzeit extrahieren? –
@TomKoptel Sie erhalten den Wert mit etwas wie 'String value = System.getProperty (" connectionstring ");' – tonio