如果正确编写和方法
@BeforeClass,DBUnit可以自动完成四个工作。例如,在我们的项目中,使用Derby,一个这样的测试用例看起来像
@Before``@After
public class MyTest { protected static IDataSet getDataSet() throws Exception { URL url = MyTest.class.getClassLoader().getResource("MyDataSet.xml"); return new XmlDataSet(new FileInputStream(url.getPath())); } private static JdbcDatabaseTester databaseTester; @BeforeClass public static void setUpClass() throws Exception { // Init test environment, session etc. databaseTester = new JdbcDatabaseTester( "org.apache.derby.jdbc.ClientDriver", "jdbc:derby://localhost:1527/myschema", "username", "password"); databaseTester.setDataSet(getDataSet()); } @AfterClass public static void tearDownClass() { // Close session etc. } @Before public void setUp() throws Exception { databaseTester.onSetup(); } @After public void tearDown() throws Exception { databaseTester.onTearDown(); } @Test public void test() throws Exception { ... }}此代码将DB模式(的一个子集)恢复到
MyDataSet.xml每次测试后定义的状态。(请注意,正如@Pascal所评论的那样,重置可能并不总是完整的-
如果测试修改了不在数据集中的表,它将不受
@Before/
@After方法的影响。)



