为什么这个不起作用?我正在尝试测试一个空的数据库在什么都不做之前和什么都不做之后是一样的。换句话说,这是我能想到的使用数据库的最简单的dbunit测试。但它不起作用。测试方法实际上是从http://www.dbunit.org/howto.html中借鉴过来的。
我得到的比较空数据库的错误消息是:
java.lang.AssertionError: expected:
org.dbunit.dataset.xml.FlatXmlDataSet<AbstractDataSet[_orderedTableNameMap=null]>
but was:
org.dbunit.database.DatabaseDataSet<AbstractDataSet[_orderedTableNameMap=null]>我得到的比较空表的错误消息是:
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以进行正确的比较?我做错了什么/期望错了?
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 }发布于 2012-05-17 13:06:20
当您比较IDataSet和其他DBUnit组件时,您必须使用DBUnit提供的assert method。
如果您使用JUnit提供的assert方法,则只能通过Object中的equals方法进行比较,这就是为什么您会收到关于不同对象类型的错误消息。
https://stackoverflow.com/questions/10629127
复制相似问题