我是自动化测试和dbUnit的新手.所以我很感激你的建议.
我将创建一个测试套件,它将按以下方式运行:
>创建一个内存H2数据库
>运行DDL脚本来创建表
>运行dbUnit以插入将由所有测试使用的初始数据(让我们称之为STATE0).
>运行测试
到那里它对我来说很好看,但我不明白的是,如何在测试运行后将数据库恢复到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方法的影响.)
原文地址:https://www.jb51.cc/mssql/79054.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。