如何使用dbUnit将数据库恢复到初始状态?
发布时间:2020-12-12 06:25:23 所属栏目:MsSql教程 来源:网络整理
导读:我是自动化测试和dbUnit的新手.所以我很感激你的建议. 我将创建一个测试套件,它将按以下方式运行: 创建一个内存H2数据库 运行DDL脚本来创建表 运行dbUnit以插入将由所有测试使用的初始数据(让我们称之为STATE0). 运行测试 到那里它对我来说很好看,但我不明白
我是自动化测试和dbUnit的新手.所以我很感激你的建议.
我将创建一个测试套件,它将按以下方式运行: >创建一个内存H2数据库 到那里它对我来说很好看,但我不明白的是,如何在测试运行后将数据库恢复到STATE0并更改数据? 我可以用dbUnit做到吗? 简单的不在测试中提交事务不适合我,因为测试最终会运行多个事务,可能不止一个数据库连接. 解决方法如果您正确地编写@BeforeClass,@ Before和@After方法,DBUnit可以自动完成四项工作.例如.在我们的项目中,使用Derby,就像一个这样的测试用例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 { ... } } 此代码在每次测试后将数据库模式的(子集)放回到MyDataSet.xml定义的状态. (注意,正如@Pascal评论的那样,重置可能并不总是满的 – 如果测试修改了不在数据集中的表,它将不受@Before / @After方法的影响.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – SqlServer 08:查询以列出实例中的所有数据库
- 数据库 – 将单个R对象列写入预先存在的postgres数据库表
- 在一个表上组合两个SQL查询
- sqlserver函数大全
- SqlServer中的SmallDatetime作为条件查询的截至日期问题!
- SQL Server附加数据库出错,错误代码5123
- 如何在SQL Server 2012中解锁表?
- sql – 何时使用VARCHAR和DATE / DATETIME
- System.Data.SqlClient.SqlError: 媒体集有 2 个媒体簇,但只
- sql-server – VB6 ADODB.Recordset RecordCount属性始终返