差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

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~~