Einstieg

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.

Download und Installation

ScalaTest kann von der zum Projekt gehörenden Homepage Flagge Großbritanien 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 Flagge Großbritanien heruntergeladen werden.

Diese Anleitung basiert auf

  • JUnit 4.10 mit junit-4.10.jar und
  • ScalaTest 1.6.1 mit scalatest-1.6.1

im ClassPath.

Ein erster Unit Test

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)    
}
itmapa.de - X2H V 0.14

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)
}

itmapa.de - X2H V 0.14

ScalaTest - Homepage Flagge Großbritanien
http://www.scalatest.org/

JUnit - Homepage Flagge Großbritanien
http://www.junit.org/