Sunday, 26. April 2015
Testing Equals Semi-Automated
If you override Object.equals(..) you should also override Object.hashCode(). So your unit test for your class may look like:

    MyClass one = new MyClass();
    MyClass anotherOne = new MyClass();
    assertEquals(one, anotherOne);
    assertEquals(one.hashCode(), another.hashCode();
But does your implementation returns false if the argument is null? Or is a.equals(b) the same as b.equals(a)?

To answer theses questions PatternTesting provides an ObjectTester class which checks that for you:

    MyClass one = new MyClass();
    MyClass anotherOne = new MyClass();
    ObjectTester.assertEquals(one, anotherOne);
But the ObjectTester can do much more for you: it can check all equals implementation of a package hierarchy:

    ObjectTester.assertEqualsOfPackage("java");
For each class in the java package which have overriden the equals method the ObjectTester creates two test objects with the default constructor (if it has one) to verify the implementation.

But stop - what is, if the default constructor creates two different objects which are not equals? E.g. the Date class does it! Then you can exclude classes from the check in different ways:

    ObjectTester.assertEqualsOfPackage("java",
             Pattern.compile("java.*\\.Date"));
Here a Java pattern (which is new in PatternTesting 1.5.1) is used to exclude the Date classes in java.util and java.sql from testing the equals and hashCode implementation.

In a similiar way you can test different properties of your class like Serializable or Comparable with the different XxxTester classes in patterntesting.runtime.junit - try it!

Happy Testing

... link (0 Kommentare)   ... comment


Thursday, 19. March 2015
#StTT2015: Stuttgarter Test-Tage 2015
Das Programm zu den vierten Stuttgarter Test-Tage steht jetzt und ist unter jugs.org/tt2015 online. Die Auswahl des Programmes war nicht ganz einfach, weil wir über 20 Einreichungen aus halb Europa bekommen haben, aber ich denke, es ist eine gelungene Mischung aus verschiedenen Themen, die für's Testen relevant sind.

Die Örtlichkeiten werden wieder die gleichen wie bei den Stuttgarter Test-Tagen 2013 sein, auch wenn damals das WLAN dem Ansturm der Teilnehmer nicht gewachsen war. Aber das soll Vermittlung von Theorie und Praxis keinen Abbruch tun. Wer jetzt Lust bekommen hat, Test-Mittel und neue Kollegen kennenzulernen, sollte sich möglichst bald anmelden - beim letzten Mal mussten wir Interessierte am Ende auf eine Warteliste setzen.

... link (0 Kommentare)   ... comment


Thursday, 5. February 2015
gdv.xport 1.0
Endlich ist es soweit - Version 1.0 von gdv.xport ist jetzt draußen. Die wichtigsten Änderungen gegenüber der 0.9er-Version sind:
  • Unterstützung der 2013er Version des GDV-Datenformats
  • Unterstützung aller Satzarten dank der XML-Datei des GDVs
  • erhebliche Reduzierung des benötigten Hauptspeichers dank Streaming-API
Weitere Änderungen können den Release Notes entnommen werden.

... link (0 Kommentare)   ... comment


Tuesday, 6. January 2015
PatternTesting 1.5 released
One of the most exciting features of PatternTesting 1.5 is the chance to log and monitor SQL statements. This feature was introduced with 1.4.1 and is described in SQL Logging and Monitoring - all you have to do is to add patterntesting-rt.1.5.0.jar as library and to use
jdbc:proxy:hsqldb:mem:testdb
as JDBC URL for an in-memory DB (HSQL) - or any other valid JDBC URL, prefixed with "jdbc:proxy:...".

Another improvement of 1.5 is the better performance of the ClasspathMonitor. Especially for large classpathes with more than 20,000 classes it needed some minutes to dump the unused classes and other informations into several files. Now the different infos are collected and dumped much faster. And the ClasspathMonitor should work better now together with the classloader of WebSphere if you use the PatternTesting Agent as described in Enabling ClasspathMonitor in Websphere.

... link (0 Kommentare)   ... comment


Thursday, 1. January 2015
Happy New Year 2015
“An optimist stays up until midnight to see the new year in. A pessimist stays up to make sure the old year leaves.”
(Bill Vaughan)

... link (0 Kommentare)   ... comment


Tuesday, 23. December 2014
Happy Christmas
Christmas is a time in which, of all times in the year, the memory of every remediable sorrow, wrong, and trouble in the world around us, should be active with us, not less than our own experiences, for all good.

(Charles Dickens)

... link (0 Kommentare)   ... comment


Saturday, 15. November 2014
#StTT2015: Stuttgarter Test-Tage 2015
Impressionen vom #StTT2013Die Seiten zu den Stuttgarter Test-Tage 2015 sind jetzt unter jugs.org/tt2015 online. Ähnlich wie beim letzten Mal wollen wir auch dieses Mal den praktischen und sozialen Teil nicht zu kurz kommen lassen. So ist der Nachmittag wieder für praktische Übungen reserviert, während es am Donnerstag Gelegenheit gibt, sich beim virtuellen Lagerfeuer mit anderen Teilnehmern nicht nur über Java und Testen auszutauschen.

Dafür suchen wir noch Sponsoren, die uns den Abend-Event ermöglichen. Und natürlich suchen wir noch jede Menge Beiträge, um ein attraktives Programm gestalten zu können. Bis zum 15. Februar hat man noch Zeit, seinen CfP einzureichen...

... link (0 Kommentare)   ... comment


Sunday, 20. July 2014
Java Forum StuttgartDas 17. Java Forum Stuttgart ist jetzt vorbei. Zeit, einen kleinen Rückblick zu ziehen über Themen und Trends im Java-Bereich.

Ein Thema war natürlich Java 8, das im März veröffentlicht wurde. Nach Java 5 von 2005 ist es das erste Release, das mit Lambdas, Interfaces mit Default-Implementierung oder Streams wieder mit Spracherweiterungen glänzt. Java FX hat mit Java 8 jetzt einen großen Sprung nach vorne gemacht nimmt mächtig Fahrt auf. Leider sind viele Projekte noch in Java 6 gefangen - aber man darf sich als Entwickler schonmal darauf freuen.

Im Web-Bereich geht der Trend eindeutig zu Javascript-Bibliotheken wie jQuery oder AngularJS. Auch ist der Trend zu Javascript als "Bytecode" (GWT, TypeScript, ...) erkennbar. Im Java-Bereich dagegen herrscht immer noch die Qual der Wahl bei den Web-UI-Frameworks: JFS, Vaadin, Wicket, ... - was nehm' ich denn nur?

Bei 1600 Teilnehmer war die Wahrscheinlichkeit relativ hoch, alte Bekannte zu treffen oder sich mit anderen Entwicklern auszutauschen. Dazu dienten auch die 2 BoF-Sessions, die abends stattgefunden haben. Alles in allem war es wieder eine schöne Veranstaltung und ich freue mich schon auf's nächste Jahr.

... link (0 Kommentare)   ... comment


Sunday, 6. July 2014
Disk-Crash auf Blogger.de
Letzten Monat gab es einen Festplatten-Crash auf Blogger.de. Während die Daten für diesen Blog hier wieder eingespielt werden konnten, fehlen Bilder und PDFs. Für die kaputte Festplatte wird wohl eine Datenrettung in Auftrag gegeben werden, sodass ich hoffe, dass die fehlenden Dateien im Verlaufe des Julis wieder auftauchen werden.

Bis dahin kann man sich evtl. mit dem Internet Archive behelfen, wenn man die Bilder oder Dateien zu einem bestimmten Blog-Eintrag braucht.

... link (0 Kommentare)   ... comment


Tuesday, 6. May 2014
SQL-Statements loggen mit PatternTesting
Manche JDBC-Treiber erlauben es, dass SQL-Statements mitprotokolliert werden können. Was aber, wenn dies der Treiber im Projekt nicht kann? Dann gibt es die Möglichkeit auf PatternTesting auszuweichen. Dort gibt es seit 1.4.1 die Möglichkeit, über eine spezielle Proxy-URL einen ProxyDriver anzusprechen, der u.a. die Protokollierung der SQL-Anweisungen übernimmt.
jdbc:proxy:hsqldb:mem:testdb
So sieht z.B. die Proxy-URL für eine HSQL-Datenbank aus. Der Unterschied zur normalen JDBC-URL von HSQL (jdbc:hsqldb:mem:testdb) ist nur der zusätzliche "...proxy:..."-Eintrag in der URL.

Damit die SQL-Anweisung auch tatsächlich im Log erscheinen, muss der Log-Level für patterntesting.runtime.monitor.db auf DEBUG gesetzt werden. Als weiteres Schmankerl kann man die Anzahl der offenen Connections per JMX überwachen.

Genaueres kann im PatternTesting-Wiki unter SQL Logging and Monitoring nachgelesen werden.

... link (0 Kommentare)   ... comment


Wednesday, 9. April 2014
PatternTesting 1.4.1 released
The generation of sequence diagrams was slightly improved although it is still marked as "experimental". One bigger news is the support of ProxyDriver as JDBC driver. This allows you to monitor the number of open connections if your configured JDBC URL starts with "jdbc:proxy:...".

... link (0 Kommentare)   ... comment


Sunday, 30. March 2014
Zurück aus dem Javaland
2 Tage bestand auf dem Javaland die Möglichkeit, sich mit anderen Javaianern auszutauschen und das Neueste aus der Java-Szene kennenzulernen. Über den Hackergarten, NightHacking, oder JUGs-Cafe gabe es viele Gegenheiten, dem Community-Gedanken zu folgen und neue Einsichten zu gewinnen.

Abends konnte man dann noch die eine oder andere Attraktion des Phantasia-Landes, in dem die Javaland-Konferenz stattfand, ausprobieren. Die Fahrt auf der Black Mamba errinnerte dann doch an das eine oder andere Projekt, bei der man am Ende auch die Orientierung verlieren konnte.


Insgesamt war es eine gelungene Veranstaltung, auf der einiges geboten wurde. Ich hätte mir etwas weniger Attraktionen gewünscht, denn man hatte oftmals die Qual der Wahl.

Weitere Impressionen und Gezwitscher vom Javaland...

... link (0 Kommentare)   ... comment


Sunday, 16. March 2014
Meine erste iPhone-App
Es ist soweit - meine erste iPhone-App, CashClock, ist jetzt über iTunes verfügbar. Drei Dinge braucht der angehende App-Entwickler dafür:
  1. einen Mac
  2. Ahnung von Objectiv-C und iOS
  3. einen Developer-Account bei Apple
Mit Punkt 1 hatte ich am wenigsten Probleme. Punkt 2 kann man sich aneignen - dazu gibt es neben den Handbüchern von Apple auch eine Reihe weiterer Bücher und Anleitungen im Netz, die einem dabei helfen (wie z.B. iOS 7-Apps entwickeln mit Objective-C & Xcode 5 von Ralf Ebert).

Punkt 3 hat mich etwas Überwindung gekostet, schließlich ist der mit Kosten von ca. 80€ jährlich verbunden. Aber ohne die Mitgliedschaft im Developer-Programm kann man keine Anwendung einreichen. Für die Veröffentlichung im App Store sind noch eine Reihe von Schritte nötig und mit etwas Glück ist die eingereichte App nach 1-2 Wochen im App Store verfügbar.

... link (0 Kommentare)   ... comment


Wednesday, 5. February 2014
gdv.xport 0.9.3 ausführbar
Auch wenn gdv.xport in erster Linie eine Bibliothek für den Umgang mit GDV-Datensätzen ist, lässt sich gdv-xport 0.9.3 jetzt auch direkt als Jar-Datei aufrufen, um die darin enthaltene Main-Klasse zu starten. Auch wurde für die Satzart 220 einige weitere Sparten spendiert (Sparte 110 und 140) und einige kleinere Fehler bereinigt. Ein Fehler, der jetzt bereinigt wurde, verhinderte den Import mehrerer Datenpaket mit demselben InputStream:
List datenpakete = new ArrayList();
while (true) {
    Datenpaket paket = new Datenpaket();
    try {
        paket.importFrom(inputStream);
        datenpakete.add(paket);
    } catch (EOFException ex) {
        log.info("EOF nach " + datenpakete.size() + " Datenpaketen erreicht.");
        break;
    }
}
Dies führt jetzt mit 0.9.3 nicht mehr zum Abbruch nach dem ersten Datenpaket (s.a. Release Notes).

... link (0 Kommentare)   ... comment