Javaユニットテストのプライベートメソッドの測定


必要性
UTの被測定ユニットはprivateメソッドであることが多く,トラフィックアルゴリズムロジックなどはprivateメソッドでよく用いられるため,UTを行う必要がある.
実行可能性
privateメソッドをどのようにUTするかは、大体次のような方法があります.異なる方法は異なるチームや個人で議論されていますが、最終的にはチームメンバーの合意が必要です.スタイルを保証することができます.
方法1:
 
   private         public。


 Object methodToExecute(Object... arguments){
....
}

 
長所:手間が省ける.
欠点:コードレベルと性質が変化し、コード職人の精神に合わない.
 
方法2:
private Object methodToExecute(Object... arguments){
....
}

Object junit_methodToExecute(Object... arguments){
 return methodToExecute(... arguments);
}


以上のように、被測定メソッドを呼び出すパケットレベルメソッドが追加され、このメソッドチームはjunit_を統一的に接頭辞する.フラグユニットのテストコールに使用します.
利点:後続の再構築が容易で、コードの職責がはっきりしている.
欠点:反対者は生産コードを修正したと考えている.一部はコード職人の精神に合わない.
 
方式3:
import org.powermock.reflect.Whitebox;



Object excepted = Whitebox.invokeMethod(Object instance, String methodToExecute, Object... arguments);

長所:mockを使った
欠点:ユニットテストを実行しない人に対して、名前を変更したり再構築したりした後、テスト中の文字列メソッド名(methodToExecute)が同期して変更されていることがわかります.
方法4: