差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
java:junit:powermockito:code_coverage_with_powermock_on_static_method [2020/04/25 18:50] tony [Reference] |
java:junit:powermockito:code_coverage_with_powermock_on_static_method [2020/04/25 18:56] tony [Problem] |
||
---|---|---|---|
行 2: | 行 2: | ||
====== Code Coverage With PowerMock on static method ====== | ====== Code Coverage With PowerMock on static method ====== | ||
===== Problem ===== | ===== Problem ===== | ||
- | PowerMock最強大的地方,就是可以幫我們mock static method,還可以幫我們mock private method、constructor,甚至System的[[java:junit:powermockito:mockpartial|link]]。開發新功能無法避免使用到舊有的程式碼,而舊有的程式碼勢必有使用static method的utility class。本篇文章將分享如何撰寫測試,讓你可以正常的看到SUT(software under test)程式碼的coverage。 | + | PowerMock最強大的地方,就是可以幫我們mock static method,還可以幫我們mock private method、constructor,甚至Java System classes([[java:junit:powermockito:mockpartial|link]])。開發新功能無法避免使用到舊有的程式碼,而舊有的程式碼勢必有使用static method的utility class。本篇文章將分享如何撰寫測試,讓你可以正常的看到SUT(software under test)程式碼的coverage。 |
===== How to? ===== | ===== How to? ===== | ||
以下是本篇文章範例的類別圖:\\ | 以下是本篇文章範例的類別圖:\\ | ||
行 40: | 行 40: | ||
什麼時候會需要將SUT加入@PrepareForTest之中呢? 答案是如果你要Mock SUT裡面行為或者是Java System classes(如java.lang.*的class)的行為。 | 什麼時候會需要將SUT加入@PrepareForTest之中呢? 答案是如果你要Mock SUT裡面行為或者是Java System classes(如java.lang.*的class)的行為。 | ||
+ | - Mock SUT裡面的行為代表你的SUT沒設計好,請重新想想你的設計。 | ||
+ | - 面對Mock Java System classes的情況,如果你想要能夠正常看到coverage,不妨使用wrapper class去包裝使用到的物件。根據這篇[[https://github.com/powermock/powermock/wiki/Code-coverage-with-JaCoCo|文章]],目前沒有一個很容易讓你使用powermock又可以正常使用coverage tool的方法,至少我還沒成功過。 | ||
===== Reference ===== | ===== Reference ===== | ||
* [[https://github.com/powermock/powermock/wiki/Mock-System|Mock-System]] | * [[https://github.com/powermock/powermock/wiki/Mock-System|Mock-System]] | ||
* [[https://github.com/powermock/powermock/wiki/Code-coverage-with-JaCoCo|Code Coverage with JaCoCo]] | * [[https://github.com/powermock/powermock/wiki/Code-coverage-with-JaCoCo|Code Coverage with JaCoCo]] | ||
+ | |||
+ | ===== ===== | ||
+ | ---- | ||
+ | \\ | ||
+ | ~~DISQUS~~ |