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()測試,或直接在測試中調用該方法。

編碼后

修改待測試類業務代碼后同步修改單元測試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM