簡體   English   中英

JUnit 不適用於 Lombok - 注釋處理似乎不適用於測試類

[英]JUnit not working with Lombok - annotation processing doesn't seem to work for test classes

我有 Lombok 和 JUnit 的問題。

我正在使用IntelliJ Idea ,這是最新的一個,安裝了Lombok插件並啟用了注釋處理。

我有一個實體類:

@Data
@Builder
@AllArgsConstructor
public class User {

    private String name;
    private String email;

}

構建.gradle:

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'org.projectlombok', name: 'lombok', version: '1.18.10'
    testCompile group: 'org.projectlombok', name: 'lombok', version: '1.16.10'
    testAnnotationProcessor "org.projectlombok:lombok:1.18.10"
}

最后,測試用例:

@Test
public void whenCheckIfPresent_thenOk() {
    User user = User.builder().name("John").email("sf@sf.pl").build();
    Optional<User> opt = Optional.ofNullable(user);
    assertTrue(opt.isPresent());

    assertEquals(user.getEmail(), opt.get().getEmail());
}

當我嘗試運行此測試時,出現以下錯誤:

IdeaProjects\Tutoriale\src\test\java\optionals\OptionalsTest.java:26: error: cannot find symbol
        User user = User.builder().name("John").email("sf@sf.pl").build();
                        ^
  symbol:   method builder()
  location: class User
IdeaProjects\Tutoriale\src\test\java\optionals\OptionalsTest.java:30: error: cannot find symbol
        assertEquals(user.getEmail(), opt.get().getEmail());
                         ^
  symbol:   method getEmail()
  location: variable user of type User
IdeaProjects\Tutoriale\src\test\java\optionals\OptionalsTest.java:30: error: cannot find symbol
        assertEquals(user.getEmail(), opt.get().getEmail());
                                               ^
  symbol:   method getEmail()
  location: class User

注釋處理似乎不起作用,但我不知道如何解決這個問題。

您使用的是哪個 Gradle 版本? 這個問題在 Gradle 5.4.1 版中出現過。

對於測試源集中的 Lombok 注解,需要將 Lombok 添加到兩個依賴配置中:

testCompileOnly '...' testAnnotationProcessor '...'

同理,compileOnly 和 annotationProcessor,第一個使注解對代碼可用,第二個在編譯期間激活注解處理

您可以嘗試如下依賴項,

    compileOnly 'org.projectlombok:lombok:1.18.8'
    annotationProcessor 'org.projectlombok:lombok:1.18.8'

參考: https : //projectlombok.org/setup/gradle Lombok doc

可以在以下位置找到更多信息,

https://github.com/rzwitserloot/lombok/issues/1945

您使用了不正確的依賴項testAnnotationProcessor它應該是annotationProcessor ,請參閱lombok-gradle doc 修復 gradle 文件后,您將能夠使用終端構建它。 它也可能在 IDE 中仍然失敗,因為 lombok 需要為 IDE 啟用注釋處理(檢查您的 IDE 文檔)。

更換

編譯組:'org.projectlombok',名稱:'lombok',版本:“${lombok_version}”

compileClasspath 組:'org.projectlombok',名稱:'lombok',版本:“${lombok_version}”

為我工作!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM