Hamcrest liefert zwar schon eine Menge an Matchern mit, aber nicht immer findet man das Gewünschte und man benötigt einen eigenen Matcher. In diesem Beispiel schreiben wir einen Matcher der überprüft ob eine Zeichenkette mit A, B oder C beginnt und darauf drei Zahlen folgen. Da wir diese Prüfung in vielen verschiedenen Unit Tests durchführen [...]
JUnit und Hamcrest: Weitere Beispiele
Hier einige weitere Beispiele von Hamcrest Matchern. import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import java.util.Arrays; import java.util.List; import org.junit.Test; public class MyUnitTest { @Test public void testSomething() { List list = Arrays.asList(“one”, “two”); assertThat(list, hasItems(equalTo(“one”), equalTo(“two”))); assertThat(list, hasItems(equalToIgnoringCase(“ONE”), equalToIgnoringWhiteSpace(” two “))); assertThat(list, hasItems(anyOf(equalTo(“one”), equalTo(“three”)), not(equalTo(“four”)), equalTo(“two”))); } } Mit der hasItems lässt sich sehr einfach [...]
JUnit und Hamcrest
JUnit liefert zwar viele assertXY Methoden mit, wie z.B. assertEquals, assertTrue, assertNotNull, assertArrayEquals. Sobald aber die Behauptungen komplizierter werden muss man sich oft mit assertTrue oder assertFalse behelfen. Zum Beispiel wird hier in einem Test geprüft ob eine Liste ein bestimmtes Element enthält. @Test public void testList() { List<String> aList = Arrays.asList(“one”, “two”); assertTrue(aList.contains(“three”)); } [...]
Excelgenerierung mit Apache POI: Spaltenbreite setzen
Wenn man mit Apache POI ein Excel generiert wird per Default die Spaltenbreite in allen Spalten auf den gleichen Wert gesetzt. public static void main(String[] args) throws IOException { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet(); Row row = sheet.createRow(0); row.createCell(0).setCellValue(“a long description”); row.createCell(1).setCellValue(“name”); row.createCell(2).setCellValue(“this and that”); //set column width FileOutputStream fos = [...]
Textextraktion mit Apache Tika
Wer Texte aus Dateien wie zum Beispiel PDF oder Word extrahieren muss um sie dann zu analysieren oder um sie einer Volltextsuche wie Lucene zu übergeben, der sollte sich das Projekt Apache Tika mal genauer ansehen. Apache Tika ist eine Library die Text und Metadaten aus verschiedenen Dateien auslesen kann. Dabei nutzt Tika existierende Parser [...]
VisualVM 1.3
Vor einigen Tagen ist die neueste Version von VisualVM erschienen. Die letzte Version trägt die Nummer 1.3 und kann von der Homepage heruntergeladen werden. VisualVM ist übrigens auch Bestandteil des Java SDK. Unter Windows findet man VisualVM im bin Verzeichnisses des Java SDK. Mit jvisualvm.exe startet man die Applikation. VisualVM ist ein Tool das detaillierte [...]
Reflection Hacking
Parameternamen Wer einmal versucht hat die Namen der Parameter von einer Methode zur Laufzeit herauszufinden, hat festgestellt dass es keinen eingebauten Weg im Reflection API gibt um dies zu bewerkstelligen. Im Springframework ist eine Klasse vorhanden, die genau diese Aufgabe übernimmt. Die Klasse LocalVariableTableParameterNameDiscoverer verwendet die ASM Library um die Parameternamen herauszufinden. Im folgenden Beispiel [...]
Sun Java6 unter Ubuntu 10.04
Nach dem Update eines Ubuntu Servers auf 10.04 (Lucid Lynx) habe ich mich gewundert wieso das Sun Java SDK nicht mehr upgedatet wurde. Nun das Rätsel war schnell gelöst. Ab 10.04 wurde das sun-java6 Package aus dem Multiverse entfernt. Ubuntu empfiehlt stattdessen das openjdk-6 Package zu verwenden. Wer trotzdem die Sun JVM verwenden will kann [...]
Google Guava Teil 3: Objects/StringUtils/Primitives
Im letzten Teil dieser kleinen Guava Rundreise werfen wir einen Blick auf Objects, Strings und das primitives Package. Objects und Strings Strings und Objects sind zwei nützliche Utility Klassen die im Umgang mit String bzw. Object helfen. Strings kennt im aktuellen Release 6 Methoden die im folgenden Beispiel benutzt werden. //emptyToNull gibt den Wert [...]
Google Guava Teil 2: CharMatcher/IO
In diesem Teil schauen wir uns den CharMatcher und das IO Package aus der Guava Library an. CharMatcher Achtung: @Beta Klasse Mit dem CharMatcher lassen sich Zeichen und Zeichenketten auf bestimme Zeichen prüfen, zählen, extrahieren, löschen, durch andere Zeichen ersetzen und noch einiges mehr. CharMatcher lassen sich mit and und or mit anderen CharMatchern [...]