我試圖從一個Java類與運行JUnit測試:傳遞命令行參數的JUnit測試案例被編程方式運行
JUnitCore core = new JUnitCore();
core.addListener(new RunListener());
core.run(classToRun);
問題是我的JUnit測試要求,目前在硬編碼數據庫連接JUnit測試自己。
我在尋找的是一種以編程方式運行JUnit測試的方法(上圖),但是將一個數據庫連接傳遞給我,我在運行測試的Java類中創建,而不是在JUnit類中進行硬編碼。
基本上類似
JUnitCore core = new JUnitCore();
core.addListener(new RunListener());
core.addParameters(java.sql.Connection);
core.run(classToRun);
然後內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);
}
我知道的@參數,但它似乎並不適用在這裏,因爲它是更多的運行同樣的測試多次使用不同的值。我希望我的所有測試用例都能共享一個數據庫連接,並通過配置文件傳遞給我的java客戶端,然後運行這些測試用例(也通過配置文件傳入)。
這可能嗎?
P.S.我知道這似乎是一種奇怪的做事方式。
System.set/getProperty()方法足以將變量傳遞給正在運行的測試類。謝謝! – 2010-05-21 20:00:35
如果以這種方式傳遞參數-Dconnectionstring = foobar。你如何在運行時提取它們? – 2017-01-19 16:10:33
@TomKoptel你可以使用類似'String value = System.getProperty(「connectionstring」);'' – tonio 2017-01-19 18:36:10