ScalaTest ist ein Testframework für die Java-Plattform, wobei die Tests in der Programmiersprache Scala geschrieben werden. Durch die Integration mit anderen Tools wie JUnit, TestNG, Ant ... eignet sich ScalaTest auch als Testwerkzeug für bestehende Java Projekte. Automatisierte Tests eignen sich auch als Einstiegspunkt, um den Einsatz von Scala in bestehenden Java Projekten zu testen. Man kann so ein Gefühl dafür erhalten, wie gut sich Scala in bestehende Java Projekte integrieren lässt. Der Einsatz von Scala im Testbereich wird auch von Managern leichter akzeptiert, als das man direkt im Kernbereich einer Anwendung Scala als neue Programmiersprache akzeptiert.
ScalaTest kann von der zum Projekt gehörenden Homepage heruntergeladen werden. Da ScalaTest eine Bibliothek und kein Programm ist, erübrigt sich eine Installation. Um mit ScalaTest Unit-Tests auf Basis von JUnit durchführen zu können, müssen jedoch die entsprechenden Jars von JUnit und ScalaTest sich im ClassPath befinden. JUnit kann von der zum Projekt gehörenden Homepage heruntergeladen werden.
Diese Anleitung basiert auf
junit-4.10.jar
undscalatest-1.6.1
im ClassPath.
In diesem Abschnitt werden wir einen ersten Unit Test für eine Scala Klasse erzeugen. Zunächst folgt die zu testende Klasse, welche Geometrieeigenschaften eines Kreises zur Verfügung stellen soll.
import scala.math._ class SCircle(durchmesser: Double) { // Korrekt def umfang = Pi * durchmesser // Fehlerhaft (Pi / 4.0 * pow(durchmesser(2,0)) def flaeche = Pi / 3.0 * pow(durchmesser,2.0) }
Die Klasse SCircle
stellt unsere zu testende Klasse für die
Eigenschaften eines Kreises dar. Im Konstruktor übergeben wir den Durchmesser
des Kreises, auf den die Berechnungen basieren. Weiter enthält unsere Klasse
zwei Funktionen. Eine korrekt implementierte Methode zur Berechnung des
Kreisumfanges umfang
und eine fehlhaft implementierte Methode
zur Berechnung des Flächeninhaltes flaeche
.
Nachdem die zu testende Klasse fertiggestellt ist, definieren wir nun unsere Testklasse.
import org.junit.Test import org.junit.Assert._ import org.scalatest.junit.AssertionsForJUnit class SCircleTest extends AssertionsForJUnit{ val sCircle = new SCircle(4.5) @Test def testUmfang = assertEquals(sCircle.umfang,14.13716694,1E-5) @Test def testFlaeche = assertEquals(sCircle.flaeche,15.90431281,1E-5) }
ScalaTest - Homepage
http://www.scalatest.org/
JUnit - Homepage
http://www.junit.org/