Your SlideShare is downloading. ×
Spock
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Spock

762

Published on

JEConf 2014, Kiev

JEConf 2014, Kiev

Published in: Software, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
762
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Spock Евгений Борисов bsevgeny@gmail.com
  • 2. Meta & Intro State Based Testing Data Driven Testing Interaction Based Testing Spock Extensions More Cool Stuff What we’ll talk about
  • 3. The creator of Spock Groovy & Gradle committer Works for Gradleware @pniederw 3 Peter Niederwieser
  • 4. A developer testing framework... for Groovy and Java applications... based on Groovy... fully compatible with JUnit... but going beyond! Spock is...
  • 5. Homepage http://spockframework.org Source Code http://github.spockframework.org/spock Documentation http://docs.spockframework.org/en/latest Spock Web Console http://webconsole.spockframework.org Spock Example Project http://github.spockframework.org/spock-example Slides and Code for this Presentation http://github.spockframework.org/smarter-testing-with-spock Getting Started
  • 6. Who’s Using Spock?
  • 7. Who’s Using Spock? (2)
  • 8. Meta & Intro State Based Testing Data Driven Testing Interaction Based Testing Spock Extensions More Cool Stuff What we’ll talk about
  • 9. Classical Unit Testing Arrange Act Assert Given-When-Then State Based Testing
  • 10. Classical Unit Testing Arrange Act Assert Given-When-Then State Based Testing
  • 11. • Blocks setup: cleanup: expect: given: when: then: where: and: • Fixture Methods setup() cleanup() setupSpec() cleanupSpec() • Instance and @Shared fields • old() and thrown() • Forces developers to think like users • Nice looking reports (that no one reads) Recap: State Based Testing
  • 12. Meta & Intro State Based Testing Data Driven Testing Interaction Based Testing Spock Extensions More Cool Stuff What we’ll talk about
  • 13. Test the same behavior... ...with varying data! Data Driven Testing
  • 14. Test the same behavior... ...with varying data! Data Driven Testing
  • 15. where: block Data tables External data sources @Unroll Recap: Data Driven Testing
  • 16. Meta & Intro State Based Testing Data Driven Testing Interaction Based Testing Spock Extensions More Cool Stuff What we’ll talk about
  • 17. How objects communicate Mocking frameworks simplify the job Spock has its own mocking framework Interaction Based Testing
  • 18. How objects communicate Mocking frameworks simplify the job Spock has its own mocking framework Google it: “Mocks aren't Stubs” Interaction Based Testing
  • 19. How objects communicate Mocking frameworks simplify the job Spock has its own mocking framework Interaction Based Testing
  • 20. Creating Mocking Recap: Interaction Based Testing def sub = Mock(Subscriber) Subscriber sub = Mock() 1 * sub.receive("msg") (1..3) * sub.receive(_) (1.._) * sub.receive(_ as String) 1 * sub.receive(!null) 1 * sub.receive({it.contains("m")}) 1 * _./rec.*/("msg")
  • 21. Stubbing Mocking and Stubbing Impressing your friends Recap: Interaction Based Testing (2) // now returns status code String receive(String msg) { ... } sub.receive(_) >> "ok" sub.receive(_) >>> ["ok", "ok", "fail"] sub.receive(_) >> { msg -> msg.size() > 3 ? "ok" : "fail" } 3 * sub.receive(_) >>> ["ok", "ok", "fail"] (_.._) * _._(*_) >> _
  • 22. NEW IN 0.7 What’s new?
  • 23. Group conditions/interactions w/ same target Better mocking failure messages New in 0.7 (1) with(person) { name == “Fred” age == 30 sex == “male” } with(service) { 1 * start() 1 * stop() }
  • 24. Stubs Spies Groovy mocks Declare interactions upfront More at: http://docs.spockframework.org/en/latest/new_and_noteworthy.html New in 0.7 (2) def person = Stub(Person) def person = Spy(Person, constructorArgs: ["Fred", 30]) def person = GroovyMock(person) // GroovyStub, GroovySpy def person = Mock(Person) { 1 * sleep() sing() >> “tra-la-la” }
  • 25. Meta & Intro State Based Testing Data Driven Testing Interaction Based Testing Spock Extensions More Cool Stuff What we’ll talk about
  • 26. Listeners Interceptors Annotation-driven extensions Global extensions Spock Extensions
  • 27. Spring Extension @ContextConfiguration(locations = ["my-app-context.xml"]) class InjectionExamples extends Specification { @Autowired Service1 injectedByType @Resource Service1 injectedByName @Autowired ApplicationContext context }
  • 28. Meta & Intro State Based Testing Data Driven Testing Interaction Based Testing Spock Extensions More Cool Stuff What we’ll talk about
  • 29. Homepage http://spockframework.org Source Code http://github.spockframework.org/spock Documentation http://docs.spockframework.org/en/latest Spock Web Console http://webconsole.spockframework.org Spock Example Project http://github.spockframework.org/spock-example Slides and Code for this Presentation http://github.spockframework.org/smarter-testing-with-spock Mocks Aren’t Stubs http://martinfowler.com/articles/mocksArentStubs.html Q&A

×