Home
General
Staff
Contact
Partners
Alumni
Research
Areas
Projects
Papers
Books
Reports
Awards
Teaching
Lectures
Exams
B.Theses
M.Theses
PhD Theses
Go Abroad
Misc
Talks
Library
Gallery
Links
Search
Webmaster
|
Richtlinien für das Testen mit JUnit
Übersetzerbau, WS 2002 / 2003
Tests ausführen
- Methode
AllTests.suite() so anpassen, dass tatsächlich alle
(gewünschten) Testfälle ausgeführt werden.
z.B. für Übung 2:
public class AllTests extends TestCase {
public static Test suite () {
TestSuite suite = new TestSuite();
suite.addTestSuite(TokenTest.class);
suite.addTestSuite(ScannerTest.class);
// add more suites here
return suite;
}
public static void main (String[] args) {
junit.textui.TestRunner.run(suite());
}
}
- Compilieren des Compilers- und der Testfälle.
> javac -classpath .;JUnit-Home-Verzeichnis/junit.jar
ssw/mj/*.java ssw/mj/test/*.java
- Ausführen aller Tests.
> java -cp .;JUnit-Home-Verzeichnis/junit.jar
ssw.mj.test.AllTests
Tests erstellen/hinzufügen
Zusätzliche Tests können auf drei Arten hinzugefügt werden:
- In bestehender Testfallmethode
- In bestehender Testfallklasse
- In neuer Testfallklasse
In bestehender Testfallmethode
Fügen Sie einfach in eine bestehende Testfallmethode
(= test... ) Ihren zusätzlichen Testcode ein.
z.B. in ScannerTest.java
public void testInvalidSymbols () {
...
initScanner("ä");
checkNext(none, 1, 1);
output.addExpectedLine("-- line 1, col 1: invalid character 'ä'");
checkNext(eof, 1, 1);
output.verify();
initScanner(" ö ");
checkNext(none, 1, 2);
output.addExpectedLine("-- line 1, col 2: invalid character 'ö'");
checkNext(eof, 1, 3);
output.verify();
}
In bestehender Testfallklasse
Um eine neuen Testfall zu erstellen, fügen Sie eine neue Methode, deren
Name mit test beginnt, in eine bestehende Testklasse ein.
z.B. in ScannerTest.java:
public class ScannerTest extend TestCase {
public void testMyClass () {
...
initScanner("class MyClass {" + LF +
"\tvoid main() { }" + LF +
"}");
checkNext(classKW, 1, 1, "class");
checkNext(ident, 1, 7, "MyClass");
checkNext(lbrace, 1, 15);
checkNext(voidKW, 2, 2, "void");
checkNext(ident, 2, 7, "main");
checkNext(lpar, 2, 11);
checkNext(rpar, 2, 12);
checkNext(lbrace, 2, 14);
checkNext(rbrace, 2, 16);
checkNext(rbrace, 3, 1);
checkNext(eof, 3, 1);
output.verify();
}
...
}
In neuer Testfallklasse
- Jede Testfallklasse muss von
junit.framework.TestCase
abgeleitet werden.
- Die Namen aller Testmethoden müssen mit
test
beginnen (siehe oben).
- In der Main-Methode der Testfallklasse können Sie vorsehen, mit
welchem TestRunner Ihre Testfälle ausgeführt werden sollen.
Dabei können Sie zwischen einfacher Textausgabe und zwei
GUI-Versionen wählen.
z.B. in Klasse MyTest :
- Textausgabe:
public static void main (String[] args) {
junit.textui.TestRunner.run(MyTest.class);
}
- AWT-GUI:
public static void main (String[] args) {
junit.awtui.TestRunner.run(MyTest.class);
}
- Swing-GUI:
public static void main (String[] args) {
junit.swingui.TestRunner.run(TokenTest.class);
}
Sie können diese Testfälle dann mit
> java -cp .;
JUnit-Home-Verzeichnis/junit.jar
MyTest
ausführen.
- Um die Testfälle der neuen Testfallklasse
MyTest
auch mit AllTests auszuführen, fügen Sie
einfach folgende Zeile zur suite -Methode der Klasse
ssw.mj.test.AllTests hinzu:
public class AllTests extends TestCase {
public static Test suite () {
TestSuite suite = new TestSuite();
suite.addTestSuite(TokenTest.class);
suite.addTestSuite(ScannerTest.class);
suite.addTestSuite(MyTest.class);
// add more suites here
return suite;
}
...
}
|