java - 如何 JUnit 测试从文件中解析的对象

标签 java unit-testing junit

我正在使用一个程序来解析一些文件,然后再处理这些文件。解析器经过了很好的测试,但我也必须测试处理部分。 问题是单元测试功能我需要来自解析器的大对象。我不想手动创建对象(时间太多)。 我的目标是重构一些流程功能,因为某些功能会做很多事情并处理大型对象。

语言是java,我用的是JUnit。

我试图在单元测试中保存对象和加载,但这是唯一的方法吗? 有什么建议吗?

提前致谢, 彼得

最佳答案

您可以尝试mock the parsed objects ,只为处理代码调用的特定方法定义所需的返回值。如果对象创建很复杂和/或对象具有许多外部依赖项,这将很有用。

其他选项是您列出的:直接从文件加载已解析的对象,或在单元测试中手动创建它们。我通常更喜欢后一种选择,因为单元测试应该尽可能地自包含。请注意,手动创建可能很乏味,但您只需要编写一次该代码,然后您可以将它与不同的参数一起用于所有单元测试。使用基于文件的方法时,您需要创建大量文件,这些文件可能在各个小位上有所不同,并且它们很快就会成为维护的难题。例如。如果文件格式在下一个版本中发生变化怎么办?您需要手动编辑所有测试文件。而使用第一种方法,您只需要在一个地方修改测试设置代码。

关于java - 如何 JUnit 测试从文件中解析的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7345066/

相关文章:

java - 如何在提交之前保留 JPA 自动生成的值?

java - 从配置读取器文件读取 config.property 文件时出现文件路径问题

matlab - 从文件运行单个测试的 runtests 选项

java - Apache Camel | Spring 测试|拦截路由不起作用

java - 在 Eclipse Junit 测试运行器中挂起未捕获的运行时异常

java - NIO 约束级别究竟做了什么,它如何影响性能?

java - 在Java中将文本写到图像上

php - 为什么模拟的 returnValue 在 phpunit 的拆卸中不起作用?

unit-testing - 确定哪些测试覆盖一行代码

java - JUnit 5 jupiter 中使用两个参数的参数化测试