У меня есть enum с 3 значениями (A, B, C)
.
Выражение-переключатель используется в методе foo
для выполнения некоторых операций в соответствии со значением перечисления.
У меня также естьтестовый случай с различными значениями в качестве параметра для обеспечения охвата всех условий.
Однако результаты на SonarQube показывают ", частично покрытый тестами (3 из 4 условий)." ![](https://i.stack.imgur.com/9Y2dn.png)
Мои вопросы:
- Почему существуют 4 условия? Я думаю, что должно быть 3 условия.
(A, B, C)
- Что я должен сделать, чтобы полностью покрыть 4 условия?
public enum FooType
{
A, B, C
}
public class TestCondition
{
public int foo (FooType type)
{
int ans = 0;
switch (type) {
case A:
ans = 10;
break;
case B:
ans = 20;
break;
case C:
ans = 30;
break;
}
return ans;
}
}
@Test
public void testFoo ()
{
TestCondition testCondition = new TestCondition();
testCondition.foo(FooType.A);
testCondition.foo(FooType.B);
testCondition.foo(FooType.C);
}
[ОБНОВЛЕНИЕ]
Попробуйте добавить случай по умолчанию, и результат будет таким же.
Кажется, четвертое условие - это случай default
.
- Что я должен сделать, чтобы покрыть
default
case? - Почему SonarQube учитывается в
default
, поскольку я не добавил default
в своем операторе switch?
![enter image description here](https://i.stack.imgur.com/WO8su.png)