我试图从一个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