私が取り組んでいるライブラリに対して100%コードカバレッジを得るために取り組んでいます。私はswitch文とカバレッジにいくつか問題があるようです。switch文のJacocoカバレッジ
私は現在、すべての新しいバージョンがRobolectricsと壊れているように見えるので、Jacoco 0.7.2を使用しています。
私は、単純なswitch文をテスト:私が書いた
public enum Type {
NONE, LEGACY, AKS
}
private static Class<?> getCipherClass(Type type) {
switch (type) {
case LEGACY:
return CipherWrapperLegacy.class;
case AKS:
return CipherWrapperAks.class;
default:
return null;
}
}
テストは、以下のチェック(私はメソッドがプライベートであるような反射を使用する必要があります)含まれています
final CipherWrapper instance = CipherWrapper.createInstance(mockContext, CipherWrapper.Type.LEGACY, ALIAS);
assertNotNull(instance);
Method getCipherMethod = TestUtils.makeMethodAccessible(CipherWrapper.class, "getCipherClass", CipherWrapper.Type.class);
assertNull(getCipherMethod.invoke(instance, CipherWrapper.Type.NONE));
assertEquals(CipherWrapperAks.class, getCipherMethod.invoke(instance, CipherWrapper.Type.AKS));
assertEquals(CipherWrapperLegacy.class, getCipherMethod.invoke(instance, CipherWrapper.Type.LEGACY));
を結果ではありません私が期待したもの:
黄色の線が欠けていることが示唆されているので、画像は少し混乱します。緑色のアイコンは、3つの支店のうち3つが対象であることを示しています。
また、スイッチケースをcase NONE
にして、フォールスルーするようにテストしましたが、何も変更されませんでした。
私ができる唯一のことは、スイッチをif/elseに置き換えて100%カバレッジを得ることです。
現在、私は98%のカバレッジを持っていますが、私は何も概要をもとに逃しません:
'null 'を渡したときに、一つのことをテストしているわけではありません... –
' type'にヌル値を渡しているテストケースが1つあります。これは ' NullPointerException'を返します。 (正直なところ、私は入る前に伸びを止めるためにストップし、同じ点でジョーンズが盛り上がる...) –
本当...しかし、なぜそれはどこかの枝として言及されていないのですか?概要は、私はnullパスを逃した場合、通常どんな複雑さも見逃していないことを示しています...とにかくそれをテストし、結果を返すでしょう – WarrenFaith