2012-05-17 50 views
10

爲了測試並將Lombok註釋引入到我們的項目中,我們一直在編寫一些(非常簡單)代碼,以使代碼更加美觀。不幸的是,通過Maven和通過IntelliJ運行測試時似乎都在測試中斷。似乎無法讓Lombok在單元測試中工作

我們的領域類看起來是這樣的:

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的插件。

我們正在與Maven的2型多金屬氧酸鹽運行,JSDK 1.6.0_31,龍目島0.11.0:

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

我們正在做一些愚蠢的事或缺少明顯的東西?

如果我們能夠做到這一點,那將是一件好事,因爲我已經着眼於在生產中使用Lombok一段時間了。

非常感謝,

P.

(FWIW,11.1.2的IntelliJ有龍目插件0.4,好像是用這個項目ACJ)

+0

你有沒有找到這個問題的解決方案? – anazimok

回答

1

的問題似乎是lombok生成的代碼被ajc覆蓋,根據我發現的Fabrizio Giudici的博客條目,由於Maven AspectJ插件中的一個錯誤,導致無法將必要的參數傳遞給ajc,因此沒有「乾淨」的Maven解決方案。

他在這裏提出了一個解決辦法: http://weblogs.java.net/blog/fabriziogiudici/archive/2011/07/19/making-lombok-aspectj-and-maven-co-exist

其實,this工作對我來說,這可以說是一個清晰的解決方案。您可能必須爲測試類添加一個執行階段並附加一個編織目錄。

0

不幸的是,我測試了第二個解決方案 - mentioned by mhvelplund - 但它沒有爲我工作。解決方案是從pom.xml中完全刪除AspectJ maven插件!

+0

請不要使用短鏈接服務在您的答案中包含網址。 – j0k

+0

行不知道,只是複製/粘貼由mhvelplund自己提供的鏈接。 – maxxyme

+0

哦,你是對的。 – j0k

相關問題