使用 Mockito 更輕鬆地寫 unit test
聽 vgod 提到可以用 PowerMock 來換掉 static、private、final 的方法,還有Mockito 用起來很順手。於是大概看了一下相關文件:
之前會排斥使用 mock 的原因為:
- PowerMock 的作法是換掉 classloader 和修改 bytecode,所以它可以跨越 Java 的限制 (像是無法換掉 final)。聽起來很威,感覺很危險,不確定是否夠穩定。應該不會想試它。
- Mockito 承接 EasyMock 的思維,但是用起來更容易。雖說它也無法換掉 static、private、final 等方法。
- dummy: 什麼事也不做。
- stub: 依據輸入傳回物件,藉此控制後續的邏輯。(相對來說) 不在意被呼叫的方式,像是何時被呼叫、呼叫了幾次等。
- spy: 用來確認該物件如何被使用。比方說呼叫 cursor 物件的 commit() 前有沒有先呼叫 execute()。
- mock: 同stub + spy,既需要傳回物件供待測方法使用,也在意它如何被呼叫。
之前會排斥使用 mock 的原因為:
- 沒有和真正的物件互動,不夠踏實。
- 寫起來很囉唆。
- 囉唆就算了,稍微改改程式還很容易出錯。
Reference:
http://fcamel-fc.blogspot.ca/2011/07/mockito-unit-test.html
No comments:
Post a Comment