如何为返回大数据的方法制作测试用例

时间:2012-06-04 08:28:02

标签: java unit-testing junit

该应用程序生成CSV,自定义/标签分隔符等报告&为了制作这些报告的测试用例,我使用的是JUnit-4。

但是有些方法将大量数据作为格式化输出字符串返回,必须将其转储到文件中。现在,我面临着为断言产生预期结果的问题。

  1. 那么如何模拟它,我是否需要再次编写代码,这是非常有用的。
  2. 在JUnit中编码(重新编码为原始版本)是一种很好的做法,我当然对此表示怀疑。它会紧密耦合在一起。如果代码发生变化,测试用例将来会失败。
  3. 如何为返回大量列表的方法制作测试用例,我可以将其限制为几百个,但不能模拟预期的结果列表与之进行比较。
  4. 此外,我使用JUnit在应用程序层而不是在视图层测试基于Web的应用程序的功能。没关系,还是应该转移到像HttpUnit这样的其他框架。

  5. 编辑:我正在测试一个方法,该方法将输入作为从数据库中取出的ArrayList&然后准备输出作为报告的格式正确的字符串。基本上,它从数据生成CSV。

    此外,有人可以指出一些必须遵循单元测试的最佳实践。我已经浏览了各种在线资源,但不能说太多。

1 个答案:

答案 0 :(得分:1)

您进行单元测试的方法是将数据作为参数并将其转换为CSV的方法。因此,它应该只测试这种转换是否有效,并且您应该使用最少的必要数据来提供它,以验证它确实有效。对于所有情况。

此方法应独立于从数据库中提取数据的方法,并且您不应从数据库中获取大量数据以对此方法进行单元测试。只需在内存中准备数据,并将其作为测试中数据转换方法的参数:

List<Foo> data = new ArrayList<Foo>();
data.add(createFooA());
data.add(createFooB());
String csv = myTestedObject.transformToCsv(data);
assertEquals("...", csv);