Junit下使用Mock进行单元测试的注意点

Junit下使用Mock进行单元测试的注意点(待补充)

编写测试方法前

不要使用@Autowired注入待测试类,使用@InjectMocks。

  • @Autowired会启动Spring,导致单元测试运行速度变慢。
  • 如果待测试类中有读配置文件的全局变量,@Autowired会自动读配置,可能在环境上造成问题。

@MockBean所有依赖

  • 即@MockBean在被测试类中用@Autowired注入的变量。

编写测试方法时

注意所有能调用的方法都是已MockBean的方法

  • 注意Mock与MockBean的区别,Mock不会调用内部的方法,等同于Mockito.mock()。MockBean与InjeckMocks作用类似,注入对应类。
  • 在配置类中定义的变量要Mock使用,尽量不用@value直接从配置文件读。

@value变量用反射Mock

  • 单元测试中对待测试类里用@value的变量采取反射方法Mock

数据一致性造成的问题

  • 单元测试中能用Mockito.any()的时候尽量用any(),避免数据一致性造成的问题。
点击查看代码
ReflectionTestUtils.setField(this, "name","content");
  • @value注解读配置文件时读到的都是字符串。

对void方法进行单元测试

  • 在本类中其他地方有调用该void方法时,从调用处下手测试。
  • 在本类中无调用,考虑新建实例后使用Mockito.verify()测试,或直接在测试中调用该方法。

编码后

修改待测试类业务代码后同步修改单元测试

posted @ 2021-12-11 11:57  zjcfrancis  阅读(1237)  评论(0编辑  收藏  举报