Eclipse: Argumente vertauschen mit Hilfe von Regular Expressions
Ich habe kürzlich ein Projekt von JUnit nach TestNG migriert. Mit Hilfe des Ecplipse Plugins war das ein one-click Task. Jede assert-Methode wird duch das Pendant in der Klasse org.testng.AssertJUnit
ersetzt. Dies ist aber nur eine Zwischenlösung. Das Ziel ist die Verwendung von org.testng.Assert
. Dies birgt eine kleine Herausforderung. JUnit’s assert-Methoden mit zwei Argumenten, z.B. assertEquals
oder assertSame
definieren die Reihenfolge expected, actual. TestNG definiert dies genau umgekehrt. Deswegen müssen die Argumente vertauscht werden.
Das Vertauschen wird erreicht mittels Find/Replace und Regular Expressions. Um bspw. in allen assertEquals-Methoden die Argumente zu vertauschen, führen Sie folgende fünf Schritte aus:
- Innerhalb der jeweiligen Testklasse den Find/Replace-Dialog aufrufen, entweder über den Meüeintrag Edit oder mit der Tastenkombination [Strg]-F.
- Den Haken bei Regular expressions setzen.
assertEquals\(([^,]+),\s*([^)]+)\s*\)
in das Textfeld Find eingeben.assertEquals(\2, \1)
in das Textfeld Replace eingeben.- Den Button Replace All klicken.
In der Expression im Textfeld Find werden zwei Capturing Groups verwendet. Sie werden erzeugt mit ([^,]+)
und ([^)]+)
. Im Textfeld Replace werden sie in vertauschter Reihenfolge referenziert mit \2
und \1
.