Я заблудился от того, как SonarQube вычисляет условия, охватываемые тестами.
Варианты используемых инструментов: * JaCoCo 0.8.1 * SonarQube 7.4
Это мой отличный код
boolean condition1(boolean b1, boolean b2) {
!b1 || !b2
}
boolean condition2(boolean b1, boolean b2) {
b1 || b2
}
boolean condition3(boolean b1, boolean b2) {
!b1 && !b2
}
boolean condition4(boolean b1, boolean b2) {
b1 && b2
}
boolean condition5(boolean b1, boolean b2) {
b1 && !b2
}
boolean condition6(boolean b1, boolean b2, boolean b3) {
b1 && b2 && b3
}
Вот тесты
void "test condition 1"() {
expect:
service.condition1(c1,c2)
where:
c1 | c2
true | true
true | false
false | true
false | false
}
void "test condition 2"() {
expect:
service.condition2(c1,c2)
where:
c1 | c2
true | true
true | false
false | true
false | false
}
void "test condition 3"() {
expect:
service.condition3(c1,c2)
where:
c1 | c2
true | true
true | false
false | true
false | false
}
void "test condition 4"() {
expect:
service.condition4(c1,c2)
where:
c1 | c2
true | true
true | false
false | true
false | false
}
void "test condition 5"() {
expect:
service.condition5(c1,c2)
where:
c1 | c2
true | true
true | false
false | true
false | false
}
void "test condition 6"() {
expect:
service.condition6(c1, c2, c3)
where:
c1 | c2 | c3
true | true | true
true | true | false
true | false | true
true | false | false
false | true | true
false | true | false
false | true | true
false | true | false
false | false | false
}
В отчете о покрытии кода говорится, что эти условия не выполнены, и единственная информация, которую я получаю, - это следующее
condition1. (11 of 22 conditions)
condition2. (7 of 14 conditions)
condition3. (11 of 22 conditions)
condition4. (7 of 14 conditions)
condition5. (9 of 18 conditions)
condition6. (11 of 22 conditions)
Это означает, что я не являюсьсмог достичь 100% покрытых тестов, хотя я считаю, логично, что.
Мне известна документация SonarQube https://docs.sonarqube.org/latest/user-guide/metric-definitions/, где написано
В каждой строке кода, содержащейВ некоторых булевых выражениях покрытие условий просто отвечает на следующий вопрос: «Было ли каждое булево выражение оценено как истинное и ложное?». Это плотность возможных условий в структурах управления потоком, которые выполнялись во время выполнения модульных тестов
Кто-нибудь имеет представление о том, как это на самом деле работает и что я здесь не так делаю?