DatabaseOperation
DatabaseOperation.UPDATE:这个操作将从测试数据源中读取的数据集的内容更新到数据库中,注意这个操作正确执行的前提是测试


数据表已经存在,如果不存在这个测试用例将会失败
DatabaseOperation.INSERT:这个操作把从测试数据源中读取的数据集的内容插入到数据库中,注意这个操作正确执行的前提是测试数据表不存在,这个操作将新建数据表。如果测试数据表已经存在这个测试用例将会失败。另外,在执行这个操作的时候要特别注意数据集中数据表的顺序,否则可能会因为违反外键约束而造成测试用例失败
DatabaseOperation.DELETE:这个操作会从数据库中删除数据,注意,这个操作只删除数据集中存在的数据行而不是整个数据表中的数据
DatabaseOperation.DELETE_ALL:这个操作删除数据表中的所有行,注意,这个操作也只影响数据集中声明了的数据表,数据集中没有涉及到的数据表中的数据不会删除
DatabaseOperation.TRUNCATE:这个操作将删除数据集中声明的数据表,如果数据中有些表并没有在预定义的数据集中提到,这个数据表将不会被影响。注意,这个操作是按照相反的顺序执行的
DatabaseOperation.REFRESH:顾名思义,这个操作将把预定义数据集中的数据同步到数据库中,也就是说这个操作将更新数据数中已有的数据、插入数据库中没有的数据。数据库中已有的、但是数据集中没有的行将不会被影响。我们用一个产品数据库的拷贝进行测试的时候可以使用这个操作将预定义数据同步到产品数据库中
DatabaseOperation.CLEAN_INSERT:删除所有的数据表中的数据,然后插入数据集中定义的数据,如果你想保证数据库是受控的,这

个你会比较喜欢。
DatabaseOperation.NONE:不执行任何操作
CompositeOperation:将多个操作组合成一个,便以维护和重用
TransactionOperation:在一个事物内执行多个操作
IdentityInsertOperation:在使用MSSQL的时候,插入数据时IDENTITY列我们是没有办法控制的,用这个就可以控制了,只有在使用MSSQL的时候才会用得到

 


1. package
2. import
3. import
4. import
5. import
6. import
7. import
8. import
9. import
10. import
11. import
12.    
13. import
14. import
15. import
16. import
17. import
18. import
19. import
20. import
21. import
22. import
23. import
24. import
25. import
26. import
27. import
28. import
29. import
30.    
31. public abstract class
32.    
33. // partial database export 
34. public static void
35. boolean
36. boolean flat) throws
37.             FileNotFoundException, IOException {    
38.         connection.getConfig().setFeature(    
39. true);    
40. if
41.             connection.getConfig().setProperty(    
42.                     DatabaseConfig.PROPERTY_RESULTSET_TABLE_FACTORY,    
43. new
44.    
45. new
46. // all data 
47. if (null
48. for
49.                 partialDataSet.addTable((String) it.next());    
50.             }    
51. // sql query 
52. if (null
53. for
54.                 String key = (String) it.next();    
55.                 partialDataSet.addTable(key, (String) sqls.get(key));    
56.             }    
57.    
58. if
59.             FlatXmlDataSet    
60. new
61. else
62. new
63.     }    
64.    
65. // full database export 
66. public static void
67. boolean streamed, boolean
68. throws
69.             IOException {    
70. if
71.             connection.getConfig().setProperty(    
72.                     DatabaseConfig.PROPERTY_RESULTSET_TABLE_FACTORY,    
73. new
74.    
75.         IDataSet fullDataSet = connection.createDataSet();    
76. if
77. new
78. else
79. new
80.     }    
81.    
82. public static void
83. boolean streamed, boolean
84. throws
85. // 把Documenth转换为DBUnit的DataSet并解决中文编码问题 
86. // is.setEncoding("GBK"); 
87.         IDataSetProducer producer;    
88.         IDataSet dataSet;    
89. if
90. new FlatXmlProducer(new
91. else
92. new XmlProducer(new
93. if
94. new
95. else
96. new
97.    
98. // 执行插入操作 
99.         DatabaseOperation.REFRESH.execute(connection, dataSet);    
100.     }    
101.    
102. public static void
103. boolean flat) throws
104.             SQLException {    
105.         IDataSetProducer producer;    
106.         IDataSet dataSet;    
107. if
108. new FlatXmlProducer(new
109. else
110. new XmlProducer(new
111.    
112. new
113.    
114. // 执行插入操作 
115.         DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet);    
116.     }    
117.    
118. }