如何在Junit中处理测试数据?

时间:2010-06-01 10:11:19

标签: java unit-testing tdd junit

在TDD(测试驱动开发)开发过程中,如何处理测试数据? 假设一个场景,解析一个日志文件以获取所需的列。对于强大的测试,我如何准备测试数据?我是否正确地将这些文件放在测试类文件中?

5 个答案:

答案 0 :(得分:15)

例如,Maven使用一种用于处理测试数据的文件夹结构的约定:

src
  main
    java           <-- java source files of main application
    resources      <-- resource files for application (logger config, etc)
  test
    java           <-- test suites and classes
    resources      <-- additional resources for testing

如果你使用maven进行构建,你需要将测试资源放在正确的文件夹中,如果你的建筑有不同的东西,你可能想要使用这个结构,因为它不仅仅是一个maven惯例,我的意见它接近'最佳实践'。

答案 1 :(得分:2)

在测试中对它们进行硬编码,使它们接近使用它们的测试,使测试更具可读性。

从真实的日志文件创建测试数据。写下要写的测试列表,逐个处理,一旦通过就打勾。

答案 2 :(得分:2)

另一种选择是模拟您的数据,消除对外部源的依赖。这样,无需多个外部测试数据实例即可轻松测试各种数据条件。然后我通常使用完整的集成测试进行轻量级烟雾测试。

答案 3 :(得分:1)

getClass().getClassLoader().getResourceAsStream("....xml");
测试内部为我工作。但是

getClass().getResourceAsStream("....xml");

没用。 不知道为什么,但也许它可以帮助其他人。

答案 4 :(得分:0)

当我的测试数据必须是外部文件时 - 我试图避免这种情况,但不能总是 - 我将它放入与我的项目相同级别的保留测试数据目录中,并使用{{1}阅读它。 test-data目录不是必需的,只是方便。但尽量避免需要这样做;正如@philippe指出的那样,在测试中将值硬编码几乎总是更好,就在你可以看到的地方。