【发布时间】:2019-08-21 08:35:53
【问题描述】:
我有带有lombok 注释的内部类的集成测试。看起来是这样的
@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;
}
在Idea 中我启用了注释处理,至少它能够编译。当我尝试通过gradlew 运行clean build 时出现错误
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
它似乎没有看到lombok 生成的构造函数。
我的build.gradle 看起来像这样(我使用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"
}
有什么问题?也许我的integrationTest 配置有问题?
【问题讨论】:
-
@Data应该生成NoArg和AllArg构造函数 -
我过去曾遇到过 getter 和 setter 注释似乎没有生成它们的情况。我最终只是自己写了它们。这些问题在龙目岛似乎很常见
标签: java gradle lombok integration-testing