java - 似乎无法让 Lombok 在单元测试中工作

标签 java unit-testing junit intellij-idea lombok

我们一直在整理一些(非常简单的)代码来测试并将 Lombok 注释引入到我们的项目中,从而使我们的代码更好一些。不幸的是,无论是通过 Maven 还是通过 IntelliJ 运行测试时,测试似乎都中断了。

我们的领域类看起来像这样:

package foo.bar;

import lombok.Data;

@Data
public class Noddy {

    private int id;
    private String name;

}

有相应的测试:

package foo.bar;

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class NoddyTest {

    @Test
    public void testLombokAnnotations(){
        Noddy noddy = new Noddy();
        noddy.setId(1);
        noddy.setName("some name");
        assertEquals(noddy.getName(), "some name");
    }
}

我们有 Maven 中的 aspectjrt 依赖项(以及 IntelliJ 中的相关插件)和 aspectj-maven-plugin。

我们使用 Maven 2 样式的 POM、JSDK 1.6.0_31、Lombok 0.11.0 运行:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>0.11.0</version>
</dependency>

我们是在做一些愚蠢的事情还是遗漏了一些明显的事情?

如果我们能让它工作,那就太好了,因为我已经关注在生产中使用 Lombok 一段时间了。

非常感谢,

P.

(FWIW,IntelliJ 11.1.2 有 Lombok 插件 0.4,似乎在这个项目中使用 ACJ)

最佳答案

<罢工> 问题似乎是 lombok 生成的代码被 ajc 覆盖,根据 Fabrizio Giudici 发现的博客条目,由于 Maven AspectJ 插件中的错误阻止您通过ajc 的必要参数。

他在这里提出了一个解决方法:http://weblogs.java.net/blog/fabriziogiudici/archive/2011/07/19/making-lombok-aspectj-and-maven-co-exist

实际上,this为我工作,它可以说是一个更清洁的解决方案。您可能必须使用额外的 weave 目录为测试类添加执行阶段。

关于java - 似乎无法让 Lombok 在单元测试中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10643936/

相关文章:

maven - 如何将输入从命令行传递到junit maven测试程序

java - 如何用java编写相同场景的正向和负向测试用例?

unit-testing - Junit 中是否有任何理由不在声明时创建对象?

java - LWJGL 和 Slick2D 64 位

node.js - Jest 的 globalSetup 使我的测试无法被识别

java - Spring Boot Java Controller 的单元测试

objective-c - 我如何捕获 OCUnit 测试通过/失败消息/事件

java - 对象不是此 Realm 的架构的一部分

java - 实现子类的好方法

java - 我们可以使用 java 从 MySql 数据库中获取添加的图像吗?