Java/Junit では、何らかのオブジェクトで null をテストする必要があります。条件をテストするにはさまざまな方法がありますが、ほとんどのテストで assertTrue を使用しています。assertTrue で null をチェックすると、EclEmma は 1 つのブランチのみをテストしていると述べています。
手動でステートメントを変数に解決すると (結果をブール値に設定して assertTrue に渡すなど)、コード カバレッジは assert で完了したと見なされますが、変数の初期化行では完了したと見なされません。
なぜこうなった?これは、 http://sourceforge.net/apps/trac/eclemma/wiki/FilteringOptionsで言及されているように、Java が明らかに追加する余分なバイト コードに関連していますか? 任意の解決策 (他の assert ステートメントの使用を除く)。
true をアサート:
assertTrue( myObject == null ); //1 of 2 branches
true をアサート:
boolean test = (myObject == null); //1 of 2 branches missing
assertTrue(test); // complete
assertNull:
assertNull( myObject ) //complete;