Java 如何处理Junit中的测试数据?

Java 如何处理Junit中的测试数据?,java,unit-testing,tdd,junit,Java,Unit Testing,Tdd,Junit,在TDD(测试驱动开发)开发过程中,如何处理测试数据? 假设在一个场景中,解析一个日志文件以获得所需的列。对于强测试,我如何准备测试数据?对于我来说,将这些文件定位到测试类文件是否正确?例如,Maven对处理测试数据的文件夹结构使用约定: src main java <-- java source files of main application resources <-- resource files for applicatio

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

例如,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
src
主要的

java在测试中对它们进行硬编码,以便它们接近使用它们的测试,从而使测试更具可读性


从真实日志文件创建测试数据。写一份拟编写的测试列表,逐一处理,并在通过后勾选。

另一种选择是模拟您的数据,消除对外部源的任何依赖。通过这种方式,可以轻松地测试各种数据条件,而不必有多个外部测试数据实例。然后,我通常使用成熟的集成测试进行轻量级冒烟测试。

当我的测试数据必须是一个外部文件时——我试图避免这种情况,但不能总是这样——我将它放在与我的项目处于同一级别的保留测试数据目录中,并使用
getClass().getClassLoader().getResourceAsStream(path)
读取它。测试数据目录不是一个要求,只是一种方便。但尽量避免这样做;正如@philippe指出的,在测试中硬编码值几乎总是更好的,就在您可以看到它们的地方

getClass().getClassLoader().getResourceAsStream("....xml");
考试对我来说很有效。但是

getClass().getResourceAsStream("....xml");
没用。
不知道为什么,但可能对其他人有所帮助。

这是Maven中的测试约定吗?Maven简化了Java应用程序的构建过程,并大量使用了文件夹结构等约定。如果一个项目遵循这些约定,那么构建文件将非常小,因为maven根据它看到的文件和文件夹“知道”该做什么。(简单地说)