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

时间:2012-05-17 21:42:38

标签: 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)

2 个答案:

答案 0 :(得分:1)

<击> 问题似乎是lombok生成的代码被ajc覆盖,并且根据Fabrizio Giudici发现的博客条目,由于Maven AspectJ插件中的一个错误阻止你通过,所以没有“干净”的Maven解决方案。 ajc的必要参数。

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

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

答案 1 :(得分:0)

不幸的是,我测试了第二个解决方案 - mentioned by mhvelplund - 但它对我没用。解决方法是从pom.xml中完全删除AspectJ maven插件!