私はこのスイッチ システムを持っており、eclemma を使用してブランチ カバレッジをテストしています。すべてのブランチ カバレッジで少なくとも 80% を確保する必要があるため、可能な限り多くのことをテストしようとしています。ただし、eclemma によると、このスイッチ システムはブランチ カバレッジに関して完全にはテストされていません。
pos = p.getCurrentPosition().substring(0, 1);
switch (pos) {
case "G":
goalkeepers++;
break;
case "D":
defense++;
break;
case "M":
midfield++;
break;
case "F":
offense++;
break;
case "S":
substitutes++;
break;
case "R":
reserves++;
break;
}
私は単純な JUnit テストを使用して、これらの各ケースを調べました。それでも eclemma はこれを黄色でマークし、「19 のブランチのうち 7 つが失敗しました」と表示します。この切り替えシステムを通過する方法は 7 つしかないと思います (6 つの個別のケース + すべて未定義)。
スタックオーバーフローに関する同様の質問を検索してみました。それらのいくつかは、完全なカバレッジのために if/else を使用するソリューションとしてありました。これがこのカバレッジを取得する唯一の方法であるかどうかはわかりません。
これら 19 のブランチすべてがどこから来たのか、また、残りの 7 つをテストして、このスイッチ ケースで 100% のブランチ カバレッジを得る方法を誰か説明できますか?