为了账号安全,请及时绑定邮箱和手机立即绑定

测试具有外部依赖关系的类的最佳方法是什么

测试具有外部依赖关系的类的最佳方法是什么

森栏 2022-05-25 17:32:14
我有以下课程:public class XXX {    public <T> List<T> loadXXXList(Class<T> type, String fileName) {        try {            return new CsvToBeanBuilder<T>(new FileReader(fileName)).withSeparator('X')                    .withType(type).build().parse();        } catch (Exception e) {            e.printStackTrace();            System.out.println("Error occurred while loading object list from file " + fileName);            return Collections.emptyList();        }    }}什么是测试它或重组它以进行测试、单元或集成的最佳方式。我正在考虑在返回 CsvToBeanBuilder 的类中创建一个新函数,我可以模拟它以引发异常或在 .parse() 上返回一个列表?就像是:public class XXX {    public <T> List<T> loadXXXList(Class<T> type, String fileName) {        try {            return SOMETHING.parse();        } catch (Exception e) {            e.printStackTrace();            System.out.println("Error occurred while loading object list from file " + fileName);            return Collections.emptyList();        }    }    public SOMETHING something(type,filename){          return new CsvToBeanBuilder<T>(new FileReader(fileName)).withSeparator('X')                    .withType(type).build()}}但不知何故,我不相信这看起来不错,而且它只是将小东西的大复杂性缝合起来,它缝合我只是将逻辑移动到不同的地方。谢谢
查看完整描述

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

不,您不应公开或模拟 CsvToBeanBuilder 等内部实现细节。你真正的外部依赖是文件系统,你需要在单元测试中模拟之前对其进行概括,因为在测试中创建临时文件是一种代码味道。

尝试重构您的类以接受 InputStream 而不是文件路径。这样,您可以编写一个完全在内存中工作的单元测试。


查看完整回答
反对 回复 2022-05-25
  • 1 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信