J'ai un test d'intégration qui a une classe interne avec des annotations lombok
. Ça ressemble à ça
@Test(dataProvider = "jsonDiff")
public class JaversDiffIntegrationTest {
public void shouldCompareEntities(Person input1, Person input2, String expectedJson)
throws JSONException {
Person p1 = new Person("p_id", "Jack");
Person p2 = new Person("p_id", "Michael");
....
}
@TypeName("TestEntityPerson")
@Data
@AllArgsConstructor
private class Person {
private String id;
private String name;
}
Dans Idea
j'ai activé le traitement des annotations et au moins il est capable de compiler. Lorsque j'essaie d'exécuter clean build
via gradlew
J'obtiens l'erreur
constructor Person in class JaversDiffIntegrationTest.Person cannot be applied to given types;
Person p2 = new Person("p_id", "Michael");
^
required: no arguments
found: String,String
Il semble qu'il ne voit pas les constructeurs générés par lombok
. Ma build.gradle
ressemble à ceci (j'utilise gradle5
)
apply plugin: 'idea'
// TODO: move to integration-test.gradle
sourceSets {
integrationTest {
Java.srcDir 'src/testInteg/Java'
resources.srcDir 'src/testInteg/resources'
}
}
configurations {
integrationTestImplementation.extendsFrom implementation
integrationTestRuntimeOnly.extendsFrom runtimeOnly
}
task integrationTest(type: Test) {
testClassesDirs = sourceSets.integrationTest.output.classesDirs
classpath = sourceSets.integrationTest.runtimeClasspath + sourceSets.test.runtimeClasspath
outputs.upToDateWhen { false }
mustRunAfter test
useTestNG() {
suites 'src/testInteg/resources/testng.xml'
}
testLogging {
showStandardStreams = true
}
}
check.dependsOn integrationTest
dependencies {
implementation "javax.validation:validation-api:1.1.0.Final"
testImplementation "junit:junit:4.11"
testImplementation "org.spockframework:spock-core:1.3-groovy-2.5"
testImplementation "org.codehaus.groovy:groovy-all:2.5.6"
implementation "org.javers:javers-core:5.3.2"
annotationProcessor "org.projectlombok:lombok:1.18.6"
implementation "org.projectlombok:lombok:1.18.6"
integrationTestImplementation "org.testng:testng:6.14.3"
integrationTestImplementation "org.skyscreamer:jsonassert:1.5.0"
integrationTestImplementation "com.google.code.gson:gson:2.8.5"
integrationTestImplementation "commons-io:commons-io:2.6"
}
Quel est le problème? Peut-être que j'ai un problème avec la configuration de integrationTest
?
J'ai également trouvé le même problème et corrigé en ajoutant testAnnotationProcessor à côté de annotationProcessor à build.gradle:
annotationProcessor "org.projectlombok:lombok:${lombok_version}"
testAnnotationProcessor "org.projectlombok:lombok:${lombok_version}"