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

标签 java unit-testing junit

应用程序生成 CSV、自定义/制表符分隔符等报告,为了对这些报告进行测试用例,我使用 JUnit-4。

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

  1. 那怎么模拟呢,是不是又要写代码了,费劲。
  2. 在 JUnit 中编码(重新编码为原始代码)是否是一种好的做法,我当然对此表示怀疑。如果代码发生变化,它将是紧密耦合的并且测试用例将来会失败。
  3. 如何为返回巨大列表的方法制作测试用例,我可以将其限制为数百个,但无法模拟预期结果列表以与其进行比较。
  4. 此外,我使用 JUnit 在应用程序层(而不是 View 层)测试基于 Web 应用程序的功能。可以吗?或者我应该转向其他框架,例如 HttpUnit。
<小时/>

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

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

最佳答案

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

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

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

关于java - 如何为返回大数据的方法制作测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10878371/

相关文章:

java - 对对象覆盖等于,以便反向对也相同

java - 有效地存储和查询字符串列表

javascript - 如何在 Jasmine 测试中模拟 Angular $q 服务?

javascript - 什么是中途测试?

c# - RhinoMocks - 在模拟界面上引发事件失败

java - 如何在Android中获取所选单选按钮的id

java - 存储到 LinkedList 后返回 int[]

java - 我如何对 GC 进行单元测试?

java - androidx.test.espresso.NoMatchingRootException : Matcher 'is toast' did not match any of the following roots:

java - JUniting 简单的用户输入?