DBUnit oracle可以确定在给定测试后写入的表

DBUnit oracle可以确定在给定测试后写入的表,oracle,dbunit,Oracle,Dbunit,我有一个大约200个表和大约20个java服务器/批处理程序的应用程序。 我有一套相当不错的系统测试。 这些JUnit测试是黑盒测试,它们通过系统接口发送事务,然后通过接口检查预期的行为 我还有一个非常好的CI设置,其中签入触发编译类型检查,但我想将这些检查扩展为适当的单元测试用例。 单元测试用例实际上是指单个java服务器或批处理程序加上数据库(模拟对象的价值不确定)。 一半的工作已经完成了,因为我可以在单元测试中使用系统测试中的检查,但是现在的主要问题当然是如何在单元测试期间使数据库处于已知

我有一个大约200个表和大约20个java服务器/批处理程序的应用程序。 我有一套相当不错的系统测试。 这些JUnit测试是黑盒测试,它们通过系统接口发送事务,然后通过接口检查预期的行为

我还有一个非常好的CI设置,其中签入触发编译类型检查,但我想将这些检查扩展为适当的单元测试用例。 单元测试用例实际上是指单个java服务器或批处理程序加上数据库(模拟对象的价值不确定)。 一半的工作已经完成了,因为我可以在单元测试中使用系统测试中的检查,但是现在的主要问题当然是如何在单元测试期间使数据库处于已知状态

我一直在关注DBUnit来提供帮助,dataset/clean insert功能非常酷。 我现在的主要问题是,是否有任何方法可以得到一个列表,列出哪些表在两点之间发生了变化? 例如,我运行了一个系统测试套件,重点是组件X。确定在测试套件期间插入/删除/更新了哪些表的最简单方法是什么? 感谢您的反馈
Peter

我认为这些信息在Oracle系统目录中(或通过其他方式)是不容易获得的

我能想到的唯一解决方案是在每个表上创建一个(语句)触发器,将DML语句的时间记录到某个审计表中。您的测试可以在运行之前截断审计表,然后检查它


由于触发器非常简单,因此应该可以通过PL/SQL块等自动创建触发器。

您可以使用或和所有选项卡修改。后者更多地是为了保持数据库统计数据的最新,因此不打算为此提供100%的可靠性。例如,它可能无法正确处理回滚。

Hmm有趣的是,我将介绍这些Oracle选项。然而,我更希望得到利用DBUnit功能的答案——例如,我想可以使用SQL导出并进行比较。