gpt4 book ai didi

java - 简单的 dbunit 表比较失败

转载 作者:行者123 更新时间:2023-11-30 04:47:29 24 4
gpt4 key购买 nike

为什么这不起作用?我正在尝试测试空数据库在不执行任何操作之前和不执行任何操作之后是否相同。换句话说,这是我能想到的最简单的数据库 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]>

(为了便于阅读,我添加了换行符)

如果有用的话,我可以在完整的堆栈跟踪(或其他任何内容)中进行编辑。或者您可以浏览公共(public) 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 }

最佳答案

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

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

关于java - 简单的 dbunit 表比较失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10629127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com