kata - java - tests - junit 4
Post on 24-Jan-2015
879 Views
Preview:
DESCRIPTION
TRANSCRIPT
Kata - Java - Tests - JUnit 4
Author: Artem Kaftanenko
B-S-S GmbH, Dresden; Datum: 20.02.2012
2
1.1 Automatisierte Tests - Einführung
Testklassen-Struktur
» Initialisierungs-Methoden» Testfall-Methoden» Helper-Methoden
Integration ins automatisierte Testprozess
» mittels zahlreichen Frameworks» Beispiele:
- Java: Junit, TestNG, Cactus, ...- JS: JSUnit, QUnit, ...- ...
Als ein Referenz-Framework wird im Weiteren der JUnit betrachtet
3
1.2 Referenzbeispiel - JUnit - Einbindung
Mittels Maven
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.8.1</version><scope>test</scope>
</dependency>
Framework-Namensräume
• org.junit.*• org.hamcrest.*
Testklassen, Test-/Initialisierungs-Methoden werden ausgezeichnet
» mittels Annotationen
4
1.3 Referenzbeispiel - JUnit - Annotationen
für Testklassen
» keine Pflicht-Annotationen.
für die Testmethoden (Pflicht):
» @Test
für die Initialisierungsmethoden (optional):
» @Before» @After
- werden ausgeführt vor bzw. nach jeder Testmethode.
» @BeforeClass» @AfterClass
- ein Mal vor bzw. nach einer Testklasseninstanziierung, d.h. ein Mal für den ganzen Satz der Testmethoden (die annotierten Methoden müssen "static" sein).
5
1.4 Referenzbeispiel - JUnit - Assertions
Die eigentliche Überprüfung erfolgt mittels s.g. assert-Methoden.
Beispiele*:
» fail()»
» assertTrue(booleanValue)» assertFalse(booleanValue)
» assertNull(objectValue)» assertNotNull(objectValue)
» assertEquals(expectedValue, value)
___
* erhältlich per import static org.junit.Assert.*;
6
Kata - JUnit (1) - SimpleCalculatorMultiplicationTest
SimpleCalculatorMultiplicationTest* implementieren für:
» SimpleCalculatorApp#mul(...) Methode
Zu beachten
» aktive Anwendung der vorgestellten Methoden» Ermittlung maximal möglicher Anzahl der fachlich relevanten Testfälle
___
* das Skeleton-Projekt erhältlich unter https://github.com/kaftanenko/edu.java
7
2.1 ... - JUnit - parametrisierte Tests
Falls die Testlogik von einem Testfall zu einem anderen gleich ist und die Testfälle sich nur durch die Testdatensätze unterscheiden:
@RunWith(Parameterized.class)
public class TestClass {
public TestClass(Arg1Type arg1, Arg2Type arg2, ...) { ... }
@Test
public void testMethod() { ... }
@Parameterized.Parameters
public static List<Object[]> testData() {
return ...;
}
}
8
Kata - JUnit (2) - SimpleCalculatorAdditionTest
SimpleCalculatorAdditionTest implementieren für:
» SimpleCalculatorApp#add(...) Methode
Zu beachten
» es sollte einen parametriesierten Test sein
___
* das Skeleton-Projekt erhältlich unter https://github.com/kaftanenko/edu.java
9
3.1 ... - JUnit - Integration der Spring-DI
Falls die Verwendung der Spring-DI erwünscht ist:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "<class-path-to-spring-bean-context-file>", ... })
public class TestClass {
@Autowired
private ISomeService serviceUnderTest;
...
}
10
3.2 ... - JUnit - Integration der Spring-DI
Benötigt zusätzliche Abhängigkeiten
» org.springframework.core» org.springframework.context (?)
» org.springframework.test» apache.commons.logging
11
Kata - JUnit (3) - SimpleCalculatorDivisionTest
SimpleCalculatorDivisionTest implementieren für:
» SimpleCalculatorApp#div(...) Methode
Zu beachten
» Spring Dependency Injection einsetzen
___
* das Skeleton-Projekt erhältlich unter https://github.com/kaftanenko/edu.java
12
Vielen Dank!
B-S-S Business Software Solutions GmbH
Wartburgstrasse 1
99817 Eisenach/Germany
Tel. +49 3691 709000
Mail kontakt@b-s-s.de
Web www.b-s-s.de
Microsoft „Partner of the year 2010“ Finalist
Ausgezeichnet von Gartner als „Cool Vendor 2010“ in Content Management
top related