应用程序生成 CSV、自定义/制表符分隔符等报告,为了对这些报告进行测试用例,我使用 JUnit-4。
但是有些方法以格式化输出字符串的形式返回大量数据,必须将其转储到文件中。现在,我面临着生成断言的预期结果的问题。
- 那怎么模拟呢,是不是又要写代码了,费劲。
- 在 JUnit 中编码(重新编码为原始代码)是否是一种好的做法,我当然对此表示怀疑。如果代码发生变化,它将是紧密耦合的并且测试用例将来会失败。
- 如何为返回巨大列表的方法制作测试用例,我可以将其限制为数百个,但无法模拟预期结果列表以与其进行比较。
- 此外,我使用 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/