Java 测试复杂数据场景

Java 测试复杂数据场景,java,testing,Java,Testing,我正在开发一个Java Web应用程序,为用户运行一系列财务计算。运行财务计算时,使用大约30种不同的输入来计算最多18年内的15个不同值(最大15*18个预期值)。正如您所知,有大量的信息需要计算和验证 我想要的是关于如何准备测试数据(模拟30个不同的输入),将其加载到一系列对象中,并通过计算器运行这些对象以生成输出的建议,然后将这些输出与预期值进行比较 我曾试图存根一个数据库,但最终花了很长时间。嘲弄一切似乎也一样乏味。如果可能的话,我希望避免外部数据库依赖关系。您最好使用一个工厂,它可以从

我正在开发一个Java Web应用程序,为用户运行一系列财务计算。运行财务计算时,使用大约30种不同的输入来计算最多18年内的15个不同值(最大15*18个预期值)。正如您所知,有大量的信息需要计算和验证

我想要的是关于如何准备测试数据(模拟30个不同的输入),将其加载到一系列对象中,并通过计算器运行这些对象以生成输出的建议,然后将这些输出与预期值进行比较


我曾试图存根一个数据库,但最终花了很长时间。嘲弄一切似乎也一样乏味。如果可能的话,我希望避免外部数据库依赖关系。

您最好使用一个工厂,它可以从池中随机选择值并从中收集输入。通过这种方式,您可以从总体中生成任意数量的候选对象。将它们与预期结果一起坚持下去。如果数据库不符合您的喜好,也许XML或纯文本序列化就可以了


如果你做了TDD,你可以运行一些,看看预期的结果应该是什么。检查一些手工计算,以确保它们是正确的。然后使用工厂生成所需的最大测试集

听起来FitNesse()可能就是你要找的。您需要在FitNesse中设置一个html表,其中包含输入和预期输出。当您运行测试时,FitNesse会让您知道实际输出是否与预期输出匹配。

如果您在Db中有数据,并且只想从中创建测试数据,以便您的测试运行不依赖于外部Db。您可以查看DbUnit framework,并可以从Db中以XML填充示例数据。
这些XML可以用于测试目的,这些XML可以通过大量常用的解析器轻松地转换为java对象。

我将确定数量限制(边界值)周围的值,每个输入参数的实际值和零值。然后,我将使用allpairs算法()将它们结合起来。

这个难题的另一个部分是,对象图从根对象开始运行了几层。所有的数据场景和输出都是由专家预先定义的,所以我们不会动态生成任何信息。如果您使用了DBUnit,您可以提供任何具有良好示例代码的教程吗?我在一个中等规模的项目中使用了DBUnit。它们是网络上提供的两个教程。您也可以在书中查看John Ferguson Smart的“Java Power Tools”,关于Dbunit的一章。如果您发现任何问题,我可以为您编写一个示例教程。如果今天我再次解决这个问题,我将首先尝试使用这一部分。