Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于内部静态类的Lombok注释_Java_Junit_Lombok - Fatal编程技术网

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插件有关。很有趣,它似乎可以工作-不知道为什么我当前的设置不支持它-但感谢您的帮助(以及关于内部类和嵌套类的说明)