2012-05-17 12 views
10

Wir haben einen (wirklich einfachen) Code zusammengestellt, um Lombok-Annotationen zu testen und in unser Projekt einzubringen, um unseren Code etwas netter zu machen. Leider scheint das Testen zu durchbrechen, sowohl durch Maven als auch, wenn die Tests durch IntelliJ laufen.Kann Lombok nicht dazu bringen, in Unit-Tests zu arbeiten

Unsere Domain-Klassen in etwa so aussehen:

package foo.bar; 

import lombok.Data; 

@Data 
public class Noddy { 

    private int id; 
    private String name; 

} 

Mit einem entsprechenden Test:

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"); 
    } 
} 

Wir haben die aspectjrt Abhängigkeit in Maven haben (sowie die entsprechenden Plug-in IntelliJ) und die aspectj-maven-plugin.

Wir laufen mit Maven 2-style POMs, JSDK 1.6.0_31, 0.11.0 Lombok:

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

sind etwas Dummes oder etwas fehlt offensichtlich machen wir?

Es wäre großartig, wenn wir das schaffen könnten, da ich Lombok seit einiger Zeit in der Produktion verwende.

Vielen Dank,

P.

(FWIW hat IntelliJ 11.1.2 die Lombok-Plugin 0.4 und scheint für dieses Projekt mit ACJ werden)

+0

Haben Sie jemals eine Lösung für dieses Problem gefunden? – anazimok

Antwort

1

Das Problem scheint zu sein, dass der von Lombok generierte Code von ajc überschrieben wird, und laut einem Blogeintrag, den ich von Fabrizio Giudici gefunden habe, gibt es keine "saubere" Maven-Lösung aufgrund eines Fehlers im Maven AspectJ Plugin, der verhindert, dass Sie die notwendigen Argumente an ajc übergeben.

Er schlägt eine Abhilfe hier: http://weblogs.java.net/blog/fabriziogiudici/archive/2011/07/19/making-lombok-aspectj-and-maven-co-exist

Eigentlich this für mich gearbeitet, und es ist wohl eine sauberere Lösung. Möglicherweise müssen Sie für die Testklassen eine Ausführungsphase mit einem zusätzlichen Webverzeichnis hinzufügen.

0

Leider habe ich die zweite Lösung getestet - mentioned by mhvelplund - aber es hat nicht für mich gearbeitet. Lösung war, das AspectJ Maven Plugin komplett aus der pom.xml zu entfernen!

+0

Bitte verwenden Sie keinen Shortlink-Service, um eine URL in Ihre Antwort aufzunehmen. – j0k

+0

OK wusste das nicht, nur kopiert/eingefügt den Link von mhvelplund selbst zur Verfügung gestellt. – maxxyme

+0

Oh du hast Recht. – j0k

Verwandte Themen