首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单dbunit表比较失败

简单dbunit表比较失败
EN

Stack Overflow用户
提问于 2012-05-17 10:27:26
回答 1查看 3.5K关注 0票数 1

为什么这个不起作用?我正在尝试测试一个空的数据库在什么都不做之前和什么都不做之后是一样的。换句话说,这是我能想到的使用数据库的最简单的dbunit测试。但它不起作用。测试方法实际上是从http://www.dbunit.org/howto.html中借鉴过来的。

我得到的比较空数据库的错误消息是:

代码语言:javascript
复制
java.lang.AssertionError: expected:
org.dbunit.dataset.xml.FlatXmlDataSet<AbstractDataSet[_orderedTableNameMap=null]>
but was:
org.dbunit.database.DatabaseDataSet<AbstractDataSet[_orderedTableNameMap=null]>

我得到的比较空表的错误消息是:

代码语言:javascript
复制
java.lang.AssertionError: expected:
<org.dbunit.dataset.DefaultTable[_metaData=tableName=test, columns=[], keys=[], _rowList.size()=0]>
but was:
<org.dbunit.database.CachedResultSetTable[_metaData=table=test, cols=[(id, DOUBLE, noNulls), (txt, VARCHAR, nullable)], pk=[(id, DOUBLE, noNulls)], _rowList.size()=0]>

(为了提高可读性,我添加了换行符)

如果有用的话,我可以在完整的堆栈跟踪(或其他任何东西)中进行编辑。或者,您可以浏览公共git存储库:https://bitbucket.org/djeikyb/simple_dbunit

我是否需要以某种方式将我的实际IDataSet转换成xml,然后再转换回IDataSet以进行正确的比较?我做错了什么/期望错了?

代码语言:javascript
复制
 34 public class TestCase
 35 {
 36 
 37   private IDatabaseTester database_tester;
 38 
 39   @Before
 40   public void setUp() throws Exception
 41   {
 42     database_tester = new JdbcDatabaseTester("com.mysql.jdbc.Driver",
 43                                             "jdbc:mysql://localhost/cal",
 44                                             "cal",
 45                                             "cal");
 46 
 47     IDataSet data_set = new FlatXmlDataSetBuilder().build(
 48         new FileInputStream("src/simple_dbunit/dataset.xml"));
 49     database_tester.setDataSet(data_set);
 50 
 51     database_tester.onSetup();
 52   }
 53 
 54   @Test
 55   public void testDbNoChanges() throws Exception
 56   {
 57     // expected
 58     IDataSet expected_data_set = new FlatXmlDataSetBuilder().build(
 59         new FileInputStream("src/simple_dbunit/dataset.xml"));
 60 
 61     // actual
 62     IDatabaseConnection connection = database_tester.getConnection();
 63     IDataSet actual_data_set = connection.createDataSet();
 64 
 65     // test
 66     assertEquals(expected_data_set, actual_data_set);
 67   }
 68 
 69   @Test
 70   public void testTableNoChanges() throws Exception
 71   {
 72     // expected
 73     IDataSet expected_data_set = new FlatXmlDataSetBuilder().build(
 74         new FileInputStream("src/simple_dbunit/dataset.xml"));
 75     ITable expected_table = expected_data_set.getTable("test");
 76 
 77     // actual
 78     IDatabaseConnection connection = database_tester.getConnection();
 79     IDataSet actual_data_set = connection.createDataSet();
 80     ITable actual_table = actual_data_set.getTable("test");
 81 
 82     // test
 83     assertEquals(expected_table, actual_table);
 84   }
 85 
 86 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-17 13:06:20

当您比较IDataSet和其他DBUnit组件时,您必须使用DBUnit提供的assert method

如果您使用JUnit提供的assert方法,则只能通过Object中的equals方法进行比较,这就是为什么您会收到关于不同对象类型的错误消息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10629127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档