Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert

8u3631984

Bekanntes Mitglied
Hallo ich will meine Testcoverage messen. Dazu verwende ich Jacoco.
Ich annotiere die Funktionsparameter wie folgt :
Java:
    public T save(@NonNull T databaseDocument) {
Wenn ich allerdings einen Test für dieses Klasse bzw Funktion schreibe meckert Jacoco, dass nur 50% der Branches getestet werden, weil ich die NonNull Verzweigung nicht teste.
Ich habe in meinem Projekt eine lombok.config
Code:
lombok.addLombokGeneratedAnnotation = true
Aber auch das Funktioniert nicht.

Zu meinem Setup ich verwende eine Gradle Projekt in dem mehrere Module enthalten sind. Hier meine Settings.gradle
Code:
include 'media-service-app'
include 'media-service-commons'

In meiner (globalen) Build.gradle konfiguriere ich die Testcoverage :

Code:
    // jacoco
    jacoco {
        toolVersion = "0.8.8"
    }

    // test coverage
    jacocoTestReport {
        reports {
            xml.required = false
            csv.required = false
            html.required = true
        }
    }

// test coverage
    jacocoTestCoverageVerification {
        dependsOn test

        violationRules {
            rule {
                limit {
                    counter = 'CLASS'
                    minimum = 0.75
                }
                limit {
                    counter = 'METHOD'
                    minimum = 0.75
                }
                limit {
                    counter = 'LINE'
                    minimum = 0.75
                }
                limit {
                    counter = 'BRANCH'
                    minimum = 0.75
                }
            }
        }
    }

Was möchte ich :
Ich möchte, dass die NonNUll Annotation von Lombok bei der Testcoverage ignoriert werden.
Hat jemand eine Idee ?
Vielen Dank
 
Geht nicht.

Man kann mit der Generated Annotation verhindern, dass von Lombok generierter Code in die Test-Coverage einfließt. Aber spezifisch was für die Branches ausschließen geht nicht. Du kannst nur Methoden komplett ausschließen.
 
Ersteinmnal vielen Dank für deine Antwort.

Wenn ich z.B eine Builder Klasse habe und dort die "@Builder" Annotation wird diese doch inder Testcoverage ignoriert.
Was wäre denn deiner Meinung ein guter Weg mit "@NonNull" zu arbeiten und trotzdem eine Testcoverage zu haben-

Ich habe schon überlegt Objects.requiresNonNull() zu verwenden. ISt das deiner Meinung nach besser ?
 
Es wird nicht Builder Annotation ignoriert. Es wird eine Generated Annotation an die generierten Methoden mit erzeugt, die dafür sorgt, dass die Methode komplett ignoriert wird. Du kannst nur Methoden komplett ignorieren - nix dazwischen.

Test-Coverage ist nur eine Zahl, ich würde es einfach hinnehmen, dass die Branch Coverage nicht vollständig ist.
 

Zurück
Oben