Lesbare Tests als Spezifikationen
Spock ist ein in Groovy geschriebenes einfach zu nutzendes Testframework für Java und Groovy, mit dem der Testcode besser lesbar ist als z.B. in JUnit, und das den Ansatz „Test als Spezifikation“ verfolgt. Dem muss man aber nicht unbedingt folgen, sondern kann seine Tests wie gewohnt, aber mit weniger Aufwand, schreiben. Eine gute Einführung und Übersicht ist in der Spock Framework Reference im Kapitel „Spock Primer“ zu finden. Die Tests in der Beispielapplikation sind in Spock geschrieben.
Beispiel
... @SpringApplicationConfiguration(classes = GroovaaApplication) class EntitySpecification extends Specification { @Autowired private ProjectRepository projectRepository @Autowired private TaskRepository taskRepository @Autowired private SprintRepository sprintRepository Project project CompoundTask task public setup() { project = new Project() project.name ="ein Projekt" task = new CompoundTask() task.description = "eine neue Aufgabe" println("setup called") } @Autowired private StartupService startupService public cleanup() { startupService.cleanupAll() } def "association of a task to a project"() { when: project.getBacklog().add(task) then: project.getBacklog().all.size() == 1 task.getProject().one == project } def "save entities and clear " () { when: projectRepository.save(project) then: projectRepository.count() == 1 } def "is cleanup really called" () { when: // nothing happened def x = 0 then: projectRepository.count() == 0 } }
Aufgaben
- Schreiben Sie Spock Tests für eine Ihrer eigenen Domainklassen. Nehmen Sie beispielsweise die Testklasse EntitySpecification als Vorlage.
- Schreiben Sie Spock Spezifikationen für die Services, die Sie als Schnittstelle zur GUI für Ihre eigenen Domainklassen benötigen (siehe z.B. ProjectServiceSpecification).