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/