如何在TestNG中使用DbUnit

时间:2011-07-11 07:23:06

标签: junit testng dbunit

我需要将DbUnit与TestNG集成。

1)是否可以将DbUnit与TestNG一起使用,因为DbUnit基本上是JUnit的扩展。
2)如果是,如何?

3 个答案:

答案 0 :(得分:2)

最后我发现了一种将DbUnit与TestNG一起使用的方法!

使用IDatabaseTester的实例,

但另一种解决方法是: 扩展AbstractDatabaseTester并实现getConnection并覆盖必要的函数。 但重要的是在测试之前和之后调用onSetup()和onTeardown()。

希望这会有所帮助......

答案 1 :(得分:1)

不确定您要做什么,但也许Unitils会有所帮助。它就像dbunit扩展,但不限于此,并支持与TestNg的集成(通过为您的测试用例扩展UnitilsTestNG类)。

答案 2 :(得分:0)

这是执行所需功能的简单类。

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
    }
}