我们一直在整理一些(非常简单的)代码来测试并将 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/