2014-02-17 16 views
5

Wie kann ich Klassen aus meinem endgültigen Archiv filtern?Wie kann ich meine Testklassen aus meinem ShrinkWrap-Archiv entfernen?

public static JavaArchive unitTestJar() { 
    return ShrinkWrap.create(JavaArchive.class) 
      .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") 
      .addPackages(false, getCorePackages()); 
} 

public static String[] getCorePackages(String... args) { 
    List<String> strings = Arrays.asList(
      "com.lm.util", 
      "com.lm.infrastructure" 
    ); 

    strings.addAll(Arrays.asList(args)); 
    return (String[]) strings.toArray(); 
} 

Ich sehe, dass es eine Filter API, aber ich kann nicht zu finden, scheinen keine Beispiele dafür, wie es zu benutzen. Letztendlich dachte ich, ich würde einfach alles entfernen, was *Test* ist. Was ist einfacher als zu versuchen, eine Klasse zu einer Zeit hinzuzufügen.

Antwort

9

Try this:

ShrinkWrap.create(WebArchive.class) 
      .addPackages(true, Filters.exclude(".*Test.class"), getCorePackages()); 
+0

@ Sam, Die Frage ist, über API-Nutzung. In diesem Fall sehe ich keine bessere Hilfe als ein testbares Beispiel. –

+0

Hoppla, tut mir leid - ich habe die Antworten/Fragen im StackOverflow Review Abschnitt überprüft. Leider hat es mir den Zusammenhang der Antwort nicht gezeigt. –

+1

Diese Regexp, '. * Test. *', Schließt auch jede Klasse mit einem Namen aus, der das Wort "Test" enthält, was nicht unbedingt eine JUnit-Testdatei ist. Verwenden Sie '. * Test.class', um nur die Dateien mit einem Namen auszuschließen, der mit' Test' endet. – Virginie