1

该应用程序生成 CSV、自定义/选项卡分隔符等报告并制作这些报告的测试用例,我使用的是 JUnit-4。

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

  1. 那怎么模拟呢,是不是还要再写代码呢,真是大费周折。
  2. 在 JUnit 中编码(重新编码为原始代码)是否是一种好习惯,我当然对此表示怀疑。如果代码更改,它将是紧密耦合的,并且测试用例将来会失败。
  3. 如何为返回巨大列表的方法制作测试用例,我可以将其限制为数百个,但无法模拟预期结果列表以与之进行比较。
  4. 另外,我使用 JUnit 在应用层而不是视图层测试基于 Web 的应用程序的功能。是否可以,或者我应该转移到其他框架,如 HttpUnit。

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

此外,有人可以指出一些必须遵循的单元测试最佳实践。我浏览了各种在线资源,但无法联系到太多。

4

1 回答 1

1

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

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

List<Foo> data = new ArrayList<Foo>();
data.add(createFooA());
data.add(createFooB());
String csv = myTestedObject.transformToCsv(data);
assertEquals("...", csv);
于 2012-06-04T09:04:57.540 回答