Nic*_*ely 40 java junit4 selenium-rc
我试图从Java类运行JUnit测试:
JUnitCore core = new JUnitCore();
core.addListener(new RunListener());
core.run(classToRun);
Run Code Online (Sandbox Code Playgroud)
问题是我的JUnit测试需要一个当前在JUnit测试中硬编码的数据库连接.
我正在寻找的是一种以编程方式运行JUnit测试的方法(上图),但是将数据库连接传递给我在运行测试的Java类中创建的,而不是在JUnit类中硬编码.
基本上就像是
JUnitCore core = new JUnitCore();
core.addListener(new RunListener());
core.addParameters(java.sql.Connection);
core.run(classToRun);
Run Code Online (Sandbox Code Playgroud)
然后在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);
}
Run Code Online (Sandbox Code Playgroud)
我知道@Parameters,但它似乎不适用于此,因为它更多的是使用不同的值多次运行相同的测试用例.我希望我的所有测试用例共享一个数据库连接,我通过配置文件传递给我的java客户端,然后运行那些测试用例(也通过配置文件传入).
这可能吗?
PS我明白这似乎是一种奇怪的做事方式.
ton*_*nio 45
您可以使用java系统属性来实现此目的.
只需-Dconnectionstring=foobar在junit命令行中传递您需要的内容,或者使用java api for system属性以编程方式设置,使用System.setProperty(String name, String value)和System.getProperty(String name).
在您的测试中,您可以使用@Before或@BeforeClass根据此属性设置公共对象,等待是否要为每个测试运行一次设置(在这种情况下可以使用类成员),或者为每个套件运行一次(然后使用静态成员).
您甚至可以使用所有测试用例扩展的抽象类来分解此行为.
| 归档时间: |
|
| 查看次数: |
45186 次 |
| 最近记录: |