Groovy kind of Test 
5PSTUFO.BOESZ
© 2014 OPITZ CONSULTING Deutschland GmbH 
 
Motivation 
4QPDL(FCJN3BINFOEFS(SBJMT-FSOHSVQQF(. 
JOGBDIFVOEVTESVDLTTUBSLF5FT...
Was euch erwartet 
8BTJTU(SPPWZ  
8BTJTU4QPDL  
8BTJTU(FC  
8JFLBOOJDI4QPDL(FCJOFJOFNLMBTTJTDIFO+BWB1SPKFLUFJOTFU[FO
Was ihr nicht erwarten dürft 
6NGBOHSFJDIFJOG»ISVOHJO(SPPWZ 
SGBISVOHTCFSJDIUBVTFJOFNFDIUFO1SPKFLU 
BCHFTDIMPTTFOFT'PSTDIV...
Warnung 
%JFTF1S£TFOUBUJPOLBOOTQVSFOWPO2VFMMDPEFFOUIBMUFO
Groovy
Was ist Groovy? 
+7.1SPHSBNNJFSVOE4LSJQU4QSBDIF 
FOUXJDLFMUJOWPO+BNFT4USBDIBO 
BMT+43JOEFO+BWB$PNNVOJUZ1SPDFTTBVGHFOPNNFO ...
Groovy Design-Ziel 
%BT%FTJHO;JFMEFTVSTQS»OHMJDIFOOUXJDLMFST+BNFT4USBDIBOCFTUBOEEBSJO
 
FJOFÖHFTDIMJGGFOFÔ'BTTVOHEFS+BWB4Z...
Wichtigste Features 
FSXFJUFSU+BWB	EIH»MUJHFS+BWB$PEFJTUH»MUJHFS(SPPWZ$PEF

 
PQUJNJFSU+BWB	SFEV[JFSUVOOµUJHFO$PEF
TJOOWPM...
Beispiel: Array- bzw. List-Handling 
*O+BWB 
for (String it : new String [] { Rod, Carlos, Chris }) 
System.out.println(it...
Beispiel: Test 
class TrivialerTest { 
@Test 
def testet ein paar triviale Dinge() { 
assert 1 + 1 == 2 
assert 2 != 1 
} ...
Spock
Was ist Spock? 
5FTUJOHVOE4QFDJGJDBUJPO'SBNFXPSLG»S+BWBVOE(SPPWZ 
*OUVJUJWFVOEBVTESVDLTTUBSLF%4- 
*OTQJSJFSUWPOWFSTDIJFEFO...
Specification 
5FTU,MBTTF
BCHFMFJUFUWPOspock.lang.Specification 
#FTUFIUBVT 
'JFMET	[#G»SEBT4ZTUFNVOEFS4QFDJGJDBUJPO
 
'JY...
Phasen 
4FUVQ'JYUVSF 
4UJNVMVT 
7FSJGZ3FTQPOTF 
$MFBOVQ
Blocks 
%FGJOJFSFOEJF1IBTFO 
7FSXFOEVOHWPO+BWB 
7FSG»HCBSF#MµDLF 
setupPEFSgiven 
whenthenPEFSexpect 
cleanup 
where 
-BCF...
Beispiel: given when then 
class MathSpec extends spock.lang.Specification { 
def Maximum von zwei nummerischen Werten() {...
Beispiel: expect 
class MathSpec extends spock.lang.Specification { 
def Maximum von zwei nummerischen Werten() { 
expect:...
Beispiel: exception 
class MathSpec extends spock.lang.Specification { 
def Division durch 0 löst ArithmeticException aus(...
Beispiel: data-driven 
class MathSpec extends spock.lang.Specification { 
def Maximum von zwei nummerischen Werten() { 
ex...
Beispiel: data-table 
class MathSpec extends spock.lang.Specification { 
@Unroll(Maximum von #value1 und #value2 ist #resu...
Geb
Was ist Geb? 
VUPNBUJTJFSVOHTXFSL[FVHG»S8FC0CFSGM£DIFO 
	7FSZ(SPPWZ#SPXTFSBVUPNBUJPO
 
'PLVTBVGFJOGBDIFJOUVJUJWFOUXJDLMVOH...
Best of breed 
Geb vereint... 
EJF4U£SLF.£DIUJHLFJUWPO8FC%SJWFS 
EJFMFHBO[JOGBDIIFJUWPO+2VFSZ$POUFOU4FMFDUJPO 
EJF3PCVTUIF...
Beispiel: Web 2.0 Taschenrechner 
IUUQXFCSFDIOFSEF
Beispiel - Scripting Ansatz 
def Addition von zwei Zahlen() { 
given: 
go http://web2.0rechner.de/ 
expect: 
title == Web ...
Page-Object kapselt Seiten-Details 
class TaschenrechnerPage extends Page { 
static url = http://web2.0rechner.de/ 
static...
Beispiel - Page-Object Ansatz 
def Addition von zwei Zahlen() { 
given: 
to TaschenrechnerPage 
when: 
btn_1.click() 
btn_...
Page-Object kapselt Funktionalität 
class TaschenrechnerPage extends Page { 
... 
static content = { 
btn { char c - $(a# ...
Beispiel - Funktionale Spezifikation 
def Addition von zwei Zahlen() { 
given: 
to TaschenrechnerPage 
when: 
calculate(1+...
Beispiel - Spock Data-Table 
@Unroll(#formula ergibt #expectedResult) 
def Addition von zwei Zahlen() { 
given: 
to Tasche...
Verwendung in einem 
Java Projekt
Beispiel Projekt 
*$0OMJOF	1PTUCBOL4ZTUFNT
 
.VMUJ.PEVM.BWFO1SPKFLU 
+BWB
4QSJOH
+1
+4'	3JDIGBDFT
 
TFQBSBUFT.BWFO.PEVMgro...
Schritt 1 - trivialer Groovy Test 
Ziel: Maven Modul erweitern, 
so dass der folgende Groovy Test ausgeführt wird 
class T...
Groovy  JUnit Dependency 
dependencies 
dependency 
groupidorg.codehaus.groovy/groupid 
artifactidgroovy-all/artifactid 
v...
Groovy Source Paths 
plugin 
groupidorg.codehaus.mojo/groupid 
artifactidbuild-helper-maven-plugin/artifactid 
version1.8/...
Groovy Eclipse Compiler 
plugin 
artifactidmaven-compiler-plugin/artifactid 
version3.1/version 
configuration 
compilerid...
DPNQJMFS
QMVHJO
GPS
.BWFO
Test Classes vs. Test Sources 
.BWFOTVDIUTUBOEBSEN£žJHJOEFO5FTU4PVSDFTOBDIKBWB5FTU%BUFJFO 
(SPPWZ%BUFJFO	NJU%BUFJFOEVOHHSP...
mvn verify 
... 
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ groovy-functional-tests --- 
[INFO] Surefire ...
Schritt 2 - erste einfache Geb Spec 
Ziel: Maven Modul erweitern, so dass 
die folgende Geb Specification ausgeführt wird ...
LoginPage 
class LoginPage extends Page { 
static url = pages/login.xhtml 
static content = { 
username { $(#j_username) }...
GebConfig.groovy 
baseUrl = http://localhost:8888/iconline/ 
reportsDir = target/surefire-reports/geb 
IUUQXXXHFCJTIPSHNBO...
Spock  Geb Dependencies 
dependency 
groupidorg.spockframework/groupid 
artifactidspock-core/artifactid 
version0.7-groovy...
IC-Online Anwendung lokal starten 
*EFF%JFGVOLUJPOBMFO5FTUTUFTUFOEJFOXFOEVOHTP
XJFEFSOXFOEFSTJF 
BVDIWFSXFOEFOX»SEF
EIBVTT...
Ausführen von Specs mit Surefire 
plugin 
groupidorg.apache.maven.plugins/groupid 
artifactidmaven-surefire-plugin/artifac...
Nächste SlideShare
Wird geladen in …5
×

Groovy kind of test

597 Aufrufe

Veröffentlicht am

http://www.opitz-consulting.com/go/3-6-11

Groovy erfreut sich immer größerer Beliebtheit. Viele "grüne Wiese Projekte" werden damit und vor allem mit dem darauf aufsetzenden Grails Framework realisiert. Will man Groovy in einem bereits existierenden Java-Projekt verwenden bedeutet das nicht automatisch, dass das Projekt dazu grundlegend umgestellt werden muss. Insbesondere im Bereich der funktionalen Tests kann Groovy relativ problemlos integriert werden.

Unser Solution Architect Torsten Mandry stellte bei den SD Days am 09.11.2014 in Essen, der jährlichen Konferenz unserer Software-Development-Spezialisten, am Beispiel einer existierenden JSF-Anwendung vor, wie diese mit Hilfe von Groovy und den Frameworks Spock und Geb automatisiert getestet werden kann.

--
Über uns:
Als führender Projektspezialist für ganzheitliche IT-Lösungen tragen wir zur Wertsteigerung der Organisationen unserer Kunden bei und bringen IT und Business in Einklang. Mit OPITZ CONSULTING als zuverlässigem Partner können sich unsere Kunden auf ihr Kerngeschäft konzentrieren und ihre Wettbewerbsvorteile nachhaltig absichern und ausbauen.

Über unsere IT-Beratung: http://www.opitz-consulting.com/go/3-8-10
Unser Leistungsangebot: http://www.opitz-consulting.com/go/3-8-874
Karriere bei OPITZ CONSULTING: http://www.opitz-consulting.com/go/3-8-5

Veröffentlicht in: Technologie
0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
597
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
19
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Groovy kind of test

  1. 1. Groovy kind of Test 5PSTUFO.BOESZ
  2. 2. © 2014 OPITZ CONSULTING Deutschland GmbH Motivation 4QPDL(FCJN3BINFOEFS(SBJMT-FSOHSVQQF(. JOGBDIFVOEVTESVDLTTUBSLF5FTUT ,BOOJDI4QPDL(FCBVDIJOFJOFNLMBTTJTDIFO+BWB1SPKFLUFJOTFU[FO
  3. 3. Was euch erwartet 8BTJTU(SPPWZ 8BTJTU4QPDL 8BTJTU(FC 8JFLBOOJDI4QPDL(FCJOFJOFNLMBTTJTDIFO+BWB1SPKFLUFJOTFU[FO
  4. 4. Was ihr nicht erwarten dürft 6NGBOHSFJDIFJOG»ISVOHJO(SPPWZ SGBISVOHTCFSJDIUBVTFJOFNFDIUFO1SPKFLU BCHFTDIMPTTFOFT'PSTDIVOHTUIFNB
  5. 5. Warnung %JFTF1S£TFOUBUJPOLBOOTQVSFOWPO2VFMMDPEFFOUIBMUFO
  6. 6. Groovy
  7. 7. Was ist Groovy? +7.1SPHSBNNJFSVOE4LSJQU4QSBDIF FOUXJDLFMUJOWPO+BNFT4USBDIBO BMT+43JOEFO+BWB$PNNVOJUZ1SPDFTTBVGHFOPNNFO HFMFJUFUWPO(VJMMBVNF-BGPSHF 0QFO4PVSDF QBDIF4PGUXBSF-JDFOTF LUVFMMF7FSTJPO )PNFQBHFIUUQHSPPWZDPEFIBVTPSH
  8. 8. Groovy Design-Ziel %BT%FTJHO;JFMEFTVSTQS»OHMJDIFOOUXJDLMFST+BNFT4USBDIBOCFTUBOEEBSJO FJOFÖHFTDIMJGGFOFÔ'BTTVOHEFS+BWB4ZOUBYNJUEFO,PO[FQUFOWPO3VCZ[V WFSCJOEFO 2VFMMF8JLJQFEJB
  9. 9. Wichtigste Features FSXFJUFSU+BWB EIH»MUJHFS+BWB$PEFJTUH»MUJHFS(SPPWZ$PEF PQUJNJFSU+BWB SFEV[JFSUVOOµUJHFO$PEF TJOOWPMMF%FGBVMUT LPNQJMJFSU[V+BWB#ZUF$PEF M£VGUJOFJOFS+7. JOUFHSJFSUTJDIQSPCMFNMPTNJUBOEFSFO+BWB,PNQPOFOUFO PQUJPOBMF5ZQJTJFSVOH /BUJWF6OUFSTU»U[VOHWPO$MPTVSFT .BQT -JTUFO SFHVM£SFOVTES»DLFO #JH%FDJNBMT #JH*OUFHFST 6OJU5FTUJOH .PDLJOH SXFJUFSUF6OUFSTU»U[VOHWPO%#DDFTTVOE9.-+40/1SPDFTTJOH HJMUOJDIUHFOFSFMM BCFSJOEFONFJTUFO'£MMFO
  10. 10. Beispiel: Array- bzw. List-Handling *O+BWB for (String it : new String [] { Rod, Carlos, Chris }) System.out.println(it); *O(SPPWZ [Rod, Carlos, Chris].each { println it }
  11. 11. Beispiel: Test class TrivialerTest { @Test def testet ein paar triviale Dinge() { assert 1 + 1 == 2 assert 2 != 1 } }
  12. 12. Spock
  13. 13. Was ist Spock? 5FTUJOHVOE4QFDJGJDBUJPO'SBNFXPSLG»S+BWBVOE(SPPWZ *OUVJUJWFVOEBVTESVDLTTUBSLF%4- *OTQJSJFSUWPOWFSTDIJFEFOFO4QSBDIFOVOE'SBNFXPSLT +6OJU 34QFD K.PDL .PDLJUP (SPPWZ 4DBMB )PNFQBHFIUUQTDPEFHPPHMFDPNQTQPDL
  14. 14. Specification 5FTU,MBTTF BCHFMFJUFUWPOspock.lang.Specification #FTUFIUBVT 'JFMET [#G»SEBT4ZTUFNVOEFS4QFDJGJDBUJPO 'JYUVSF.FUIPET setup cleanup setupSpecVOEcleanupSpec 'FBUVSF.FUIPET UFTUFOC[XCFTDISFJCFOEJF'FBUVSFT )FMQFS.FUIPET
  15. 15. Phasen 4FUVQ'JYUVSF 4UJNVMVT 7FSJGZ3FTQPOTF $MFBOVQ
  16. 16. Blocks %FGJOJFSFOEJF1IBTFO 7FSXFOEVOHWPO+BWB 7FSG»HCBSF#MµDLF setupPEFSgiven whenthenPEFSexpect cleanup where -BCFMFE4UBUFNFOUT
  17. 17. Beispiel: given when then class MathSpec extends spock.lang.Specification { def Maximum von zwei nummerischen Werten() { given: def a = 1 def b = 5 def c = 5 when: def r = Math.max(a, b) then: r == c } }
  18. 18. Beispiel: expect class MathSpec extends spock.lang.Specification { def Maximum von zwei nummerischen Werten() { expect: Math.max(1, 5) == 5 Math.max(2, 3) == 3 } }
  19. 19. Beispiel: exception class MathSpec extends spock.lang.Specification { def Division durch 0 löst ArithmeticException aus() { when: 1.0 / 0 then: ArithmeticException e = thrown() e.message =~ Division } }
  20. 20. Beispiel: data-driven class MathSpec extends spock.lang.Specification { def Maximum von zwei nummerischen Werten() { expect: Math.max(value1, value2) == result where: value1 [1, 2, 3] value2 [5, 3, 7] result [5, 3, 7] } }
  21. 21. Beispiel: data-table class MathSpec extends spock.lang.Specification { @Unroll(Maximum von #value1 und #value2 ist #result) def Maximum von zwei nummerischen Werten() { expect: Math.max(value1, value2) == result where: value1 | value2 | result 1 | 5 | 5 2 | 3 | 3 7 | 3 | 7 } }
  22. 22. Geb
  23. 23. Was ist Geb? VUPNBUJTJFSVOHTXFSL[FVHG»S8FC0CFSGM£DIFO 7FSZ(SPPWZ#SPXTFSBVUPNBUJPO 'PLVTBVGFJOGBDIFJOUVJUJWFOUXJDLMVOH )PNFQBHFIUUQXXXHFCJTIPSH
  24. 24. Best of breed Geb vereint... EJF4U£SLF.£DIUJHLFJUWPO8FC%SJWFS EJFMFHBO[JOGBDIIFJUWPO+2VFSZ$POUFOU4FMFDUJPO EJF3PCVTUIFJUEFT1BHF0CKFDU.PEFMMJOHT EJFVTESVDLTTU£SLFWPO(SPPWZ NQGPIMFO7FSXFOEVOHNJU4QPDL
  25. 25. Beispiel: Web 2.0 Taschenrechner IUUQXFCSFDIOFSEF
  26. 26. Beispiel - Scripting Ansatz def Addition von zwei Zahlen() { given: go http://web2.0rechner.de/ expect: title == Web 2.0 Taschenrechner when: $(a#num_1).click() $(a#A42).click() $(a#num_2).click() $(a#btn_equal).click() then: $(input#input).value() == 3 }
  27. 27. Page-Object kapselt Seiten-Details class TaschenrechnerPage extends Page { static url = http://web2.0rechner.de/ static at = { title == Web 2.0 Taschenrechner } static content = { btn_1 { $(a#num_1) } btn_2 { $(a#num_2) } btn_add { $(a#A42) } btn_equals { $(a#btn_equal) } display { $(input#input) } } } IUUQXXXHFCJTIPSHNBOVBMDVSSFOUQBHFTIUNMQBHFT
  28. 28. Beispiel - Page-Object Ansatz def Addition von zwei Zahlen() { given: to TaschenrechnerPage when: btn_1.click() btn_add.click() btn_2.click() btn_equals.click() then: display.value() == 3 }
  29. 29. Page-Object kapselt Funktionalität class TaschenrechnerPage extends Page { ... static content = { btn { char c - $(a# + ids[c.toString()]) } result { display.value() } } def ids = [ 1 : num_1, ... + : A42, = : btn_equal ] def calculate( String formula ) { formula.chars.each { type it } type('=' as char) } def type( char character ) { btn(character).click() } }
  30. 30. Beispiel - Funktionale Spezifikation def Addition von zwei Zahlen() { given: to TaschenrechnerPage when: calculate(1+2) then: result == 3 }
  31. 31. Beispiel - Spock Data-Table @Unroll(#formula ergibt #expectedResult) def Addition von zwei Zahlen() { given: to TaschenrechnerPage when: calculate(formula) then: result == expectedResult where: formula | expectedResult 1+2 | 3 2+3 | 6 3+4 | 7 4+5 | 9 5+6 | 11 }
  32. 32. Verwendung in einem Java Projekt
  33. 33. Beispiel Projekt *$0OMJOF 1PTUCBOL4ZTUFNT .VMUJ.PEVM.BWFO1SPKFLU +BWB 4QSJOH +1 +4' 3JDIGBDFT TFQBSBUFT.BWFO.PEVMgroovy-functional-tests
  34. 34. Schritt 1 - trivialer Groovy Test Ziel: Maven Modul erweitern, so dass der folgende Groovy Test ausgeführt wird class TrivialerTest { @Test void testet ein paar triviale Dinge() { assert 1 + 1 == 2 assert 2 != 1 } }
  35. 35. Groovy JUnit Dependency dependencies dependency groupidorg.codehaus.groovy/groupid artifactidgroovy-all/artifactid version2.2.1/version /dependency dependency groupidjunit/groupid artifactidjunit/artifactid version4.11/version /dependency /dependencies
  36. 36. Groovy Source Paths plugin groupidorg.codehaus.mojo/groupid artifactidbuild-helper-maven-plugin/artifactid version1.8/version executions execution idadd-source/id phasegenerate-sources/phase goalsgoaladd-source/goal/goals configuration sourcessourcesrc/main/groovy/sources /configuration /execution execution idadd-test-source/id phasegenerate-test-sources/phase goalsgoaladd-test-source/goal/goals configuration sourcessourcesrc/test/groovy/sources /configuration /execution /executions /plugin
  37. 37. Groovy Eclipse Compiler plugin artifactidmaven-compiler-plugin/artifactid version3.1/version configuration compileridgroovy-eclipse-compiler/compilerid /configuration dependencies dependency groupidorg.codehaus.groovy/groupid artifactidgroovy-eclipse-compiler/artifactid version2.8.0-01/version /dependency dependency groupidorg.codehaus.groovy/groupid artifactidgroovy-eclipse-batch/artifactid version2.1.8-01/version /dependency /dependencies /plugin IUUQEPDTDPEFIBVTPSHEJTQMBZ(3007:(SPPWZDMJQTF
  38. 38. DPNQJMFS
  39. 39. QMVHJO
  40. 40. GPS
  41. 41. .BWFO
  42. 42. Test Classes vs. Test Sources .BWFOTVDIUTUBOEBSEN£žJHJOEFO5FTU4PVSDFTOBDIKBWB5FTU%BUFJFO (SPPWZ%BUFJFO NJU%BUFJFOEVOHHSPPWZ XFSEFOEBIFSOJDIUHFGVOEFO .BWFOTPMMJOEFODPNQJMJFSUFO,MBTTFOOBDI5FTUTTVDIFO properties maven.test.search.classdirtrue/maven.test.search.classdir /properties
  43. 43. mvn verify ... [INFO] --- maven-surefire-plugin:2.10:test (default-test) @ groovy-functional-tests --- [INFO] Surefire report directory: D:ProjekteGroovy_kind_of_TestSourcesgroovy-functional-tests targetsurefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running de.javandry.groovyfunctionaltests.TrivialTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.314 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------
  44. 44. Schritt 2 - erste einfache Geb Spec Ziel: Maven Modul erweitern, so dass die folgende Geb Specification ausgeführt wird class LoginSpec extends GebReportingSpec { static final validCredentials = [username: 'pl2', password: '2lp'] def login with valid credentials() { given: to LoginPage when: loginWith validCredentials then: at IcUebersichtPage } }
  45. 45. LoginPage class LoginPage extends Page { static url = pages/login.xhtml static content = { username { $(#j_username) } password { $(#j_password) } loginButton { $(#loginButton) } } void loginWith(def credentials) { username = credentials.username password = credentials.password loginButton.click() } }
  46. 46. GebConfig.groovy baseUrl = http://localhost:8888/iconline/ reportsDir = target/surefire-reports/geb IUUQXXXHFCJTIPSHNBOVBMDVSSFOUDPOGJHVSBUJPOIUNMDPOGJHVSBUJPO
  47. 47. Spock Geb Dependencies dependency groupidorg.spockframework/groupid artifactidspock-core/artifactid version0.7-groovy-2.0/version scopetest/scope /dependency dependency groupidorg.gebish/groupid artifactidgeb-spock/artifactid version0.9.2/version scopetest/scope /dependency dependency groupidorg.seleniumhq.selenium/groupid artifactidselenium-htmlunit-driver/artifactid version2.26.0/version scopetest/scope /dependency IUUQXXXHFCJTIPSHNBOVBMDVSSFOUJOUSPIUNMJOTUBMMBUJPO@@VTBHF
  48. 48. IC-Online Anwendung lokal starten *EFF%JFGVOLUJPOBMFO5FTUTUFTUFOEJFOXFOEVOHTP XJFEFSOXFOEFSTJF BVDIWFSXFOEFOX»SEF EIBVTTDIMJFžMJDI»CFSEJF0CFSGM£DIF 7FSXFOEVOHEFT.BWFO$BSHP1MVHJOT 4UBSUFOFJOFTMPLBMFO$POUBJOFST %FQMPZFOEFSOXFOEVOH
  49. 49. Ausführen von Specs mit Surefire plugin groupidorg.apache.maven.plugins/groupid artifactidmaven-surefire-plugin/artifactid version2.16/version executions execution idfunctional-tests/id phaseintegration-test/phase goals goaltest/goal /goals configuration includes include**/*Spec.class/include /includes /configuration /execution /executions /plugin IUUQNBWFOBQBDIFPSHTVSFGJSFNBWFOTVSFGJSFQMVHJOFYBNQMFTJODMVTJPOFYDMVTJPOIUNM
  50. 50. mvn verify ... [INFO] --- maven-surefire-plugin:2.16:test (functional-tests) @ groovy-functional-tests --- [INFO] Surefire report directory: D:ProjekteGroovy_kind_of_TestSources groovy-functional-teststargetsurefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running de.javandry.groovyfunctionaltests.LoginSpec ... Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.866 sec - in de.javandry.groovyfunctionaltests.LoginSpec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------
  51. 51. Das war's
  52. 52. Wie geht's weiter? ;VTUBOEIFSTUFMMFO 7FSXFOEVOH+BWB5FTU%BUB#VJMEFS MUFSOBUJWF(SPPWZ5FTU%BUB#VJMEFS 6OJUVOE*OUFHSBUJPOTUFTUTWPO+BWB,MBTTFO (SPPWZ 4QPDL(FCJO+BWB.PEVMJOUFHSJFSFO
  53. 53. Danke für eure Aufmerksamkeit

×