似乎无法让龙目岛在单元测试中工作

我们一直在整理一些(非常简单的)代码,以便进行测试,并将龙目岛注释引入我们的项目中,使我们的代码更好一些。不幸的是,似乎在测试中中断,无论是通过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风格的POMs,JSDK 1.6.0_31,龙目岛0.11.0:

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

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

如果我们能做到这一点,那就太好了,因为我已经着眼于在生产中使用龙目岛一段时间了。

非常感谢,

P.

(FWIW,IntelliJ 11.1.2具有龙目岛插件0.4,并且似乎正在使用ACJ进行此项目)


答案 1

问题似乎是龙目岛生成的代码被ajc覆盖,根据Fabrizio Giudici找到的一篇博客文章,由于Maven AspectJ插件中的错误,没有“干净”的Maven解决方案,该错误阻止您将必要的参数传递给ajc。

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

实际上,这对我有用,可以说是一个更干净的解决方案。您可能必须为测试类添加一个执行阶段,并添加一个附加的编织目录。


答案 2

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


推荐