我需要将 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
}
}