【发布时间】:2011-07-11 07:23:06
【问题描述】:
我需要将 DbUnit 与 TestNG 集成。
1) 是否可以将 DbUnit 与 TestNG 一起使用,因为 DbUnit 基本上是 JUnit 的扩展。
2) 如果是怎么办?
【问题讨论】:
我需要将 DbUnit 与 TestNG 集成。
1) 是否可以将 DbUnit 与 TestNG 一起使用,因为 DbUnit 基本上是 JUnit 的扩展。
2) 如果是怎么办?
【问题讨论】:
我终于找到了一种将 DbUnit 与 TestNG 一起使用的方法!
使用 IDatabaseTester 的实例工作,
但另一种解决方法是: 扩展 AbstractDatabaseTester 并实现 getConnection 并覆盖必要的功能。 但一件重要的事情是在测试前后调用 onSetup() 和 onTeardown()。
希望这会有所帮助...
【讨论】:
不确定您到底要做什么,但也许Unitils 会有所帮助。它类似于 dbunit 扩展但不限于此,并且支持与 TestNg 的集成(通过为您的测试用例扩展 UnitilsTestNG 类)。
【讨论】:
这是执行所需功能的简单类。
public class SampleDBUnitTest {
IDatabaseTester databaseTester;
IDataSet dataSet;
@BeforeMethod
public void setUp() throws Exception {
// These could come as parematers from TestNG
final String driverClass = "org.postgresql.Driver";
final String databaseUrl = "jdbc:postgresql://localhost:5432/database";
final String username = "username";
final String password = "password";
dataSet = new FlatXmlDataSet(Thread.currentThread().getContextClassLoader().getResourceAsStream("dataset.xml"));
databaseTester = new JdbcDatabaseTester(driverClass, databaseUrl, username, password);
databaseTester.setSetUpOperation(DatabaseOperation.CLEAN_INSERT);
databaseTester.setDataSet(dataSet);
databaseTester.setTearDownOperation(DatabaseOperation.NONE);
databaseTester.setDataSet(dataSet);
databaseTester.onSetup();
}
@AfterMethod
public void tearDown() throws Exception {
databaseTester.onTearDown();
}
@Test
public void t() throws Exception {
// Testing, testing
}
}
【讨论】: