Java 用于内部静态类的Lombok注释
在开始之前,在寻找这个问题的答案时,我已经看了以下没有回答我的问题: * 在我的测试中,我创建了一个内部类来保存我的测试用例:Java 用于内部静态类的Lombok注释,java,junit,lombok,Java,Junit,Lombok,在开始之前,在寻找这个问题的答案时,我已经看了以下没有回答我的问题: * 在我的测试中,我创建了一个内部类来保存我的测试用例: @AllArgsConstructor @Getter static class TestData { private final String testCase; private final String value1; private final String value2; private final int value3; }
@AllArgsConstructor
@Getter
static class TestData {
private final String testCase;
private final String value1;
private final String value2;
private final int value3;
}
private static final List<TestData> testData = Collections.unmodifiableList(Arrays.asList(
new TestData("test case 1", "value1", "value2", 1),
new TestData("test case 2", "value2", "value2", 2),
new TestData("test case 3", "value2", "value1", 3),
new TestData("test case 4", "value2", "value2", 4),
));
同样在这些测试中,我有一个包含所有这些测试用例的列表:
@AllArgsConstructor
@Getter
static class TestData {
private final String testCase;
private final String value1;
private final String value2;
private final int value3;
}
private static final List<TestData> testData = Collections.unmodifiableList(Arrays.asList(
new TestData("test case 1", "value1", "value2", 1),
new TestData("test case 2", "value2", "value2", 2),
new TestData("test case 3", "value2", "value1", 3),
new TestData("test case 4", "value2", "value2", 4),
));
编辑
由于它似乎对我的项目不起作用,因此我附上了失败的完整示例代码:
public class Testing {
private static final List<TestData> testData = Collections.unmodifiableList(Arrays.asList(
new TestData("test case 1", "value1", "value2", 1),
new TestData("test case 2", "value2", "value2", 2),
new TestData("test case 3", "value2", "value1", 3),
new TestData("test case 4", "value2", "value2", 4)
));
@Test
public void aTest() {
for (final TestData data : testData) {
System.out.println("***********************");
System.out.println(data.getTestCase());
System.out.println(data.getValue1());
System.out.println(data.getValue2());
System.out.println(data.getValue3());
}
}
@AllArgsConstructor
@Getter
static class TestData {
private final String testCase;
private final String value1;
private final String value2;
private final int value3;
}
}
EDIT2
在这个GitHub repo中,您可以在我的机器(以及我的一些学院)上运行的项目中找到代码示例:
有一个IntelliJ配置,您可以在其中启用注释处理 首选项->编译器->注释处理器->启用注释处理 正如Chetan Komakula所说,你的代码也适用于我的IntelliJ Obs:我认为这里不需要静态字段,我认为可以使用@BeforeAll或@beforeach方法初始化testData数组。但这是一个进步
希望有帮助。我不知道你的设置有什么问题,但我可以重现并解决你的问题 请注意,您的问题与嵌套(*)类无关,Lombok AFAIK根本没有运行 这是我的
build.gradle
:
plugins {
id 'java'
id "io.freefair.lombok" version "4.0.1"
}
lombok {
version = "1.18.10"
}
group 'org.example'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile 'junit:junit:4.12'
}
我删除了所有提到的lombok
,并添加并配置了一个插件来实现这一点
我不知道出了什么事
(*)
TestData
是“嵌套的”,但不是“内部的”。不知道为什么,但这是Oracle所说的:启用注释处理已经标记,似乎对外部类有效-但是对于内部类,我发现了问题。另外,我已经为IntelliJ为Lombokt安装了插件,这很奇怪。请放心,我经常将Lombok与嵌套类一起使用,而且没有问题。我想,你应该在github或类似的网站上创建一个完整的项目(包括gradlew),以便有人可以轻松地克隆并尝试它。感谢你的建议-添加了一个问题链接。在测试代码中使用Lombok注释时似乎有问题。我不知道这是特定于gradle的,还是链接到IDE的。在我的例子中,添加公共访问说明符使它可以访问。lombok@data annotation似乎只适用于公共类。但是看看Gradle的答案,它似乎与Maven插件有关。很有趣,它似乎可以工作-不知道为什么我当前的设置不支持它-但感谢您的帮助(以及关于内部类和嵌套类的说明)