1 / 15

Unit Testing Java using Groovy and Mock Objects

Unit Testing Java using Groovy and Mock Objects. Walker Hale Human Genome Sequencing Center Baylor College of Medicine. The Plan. Groovy makes testing Java better. Motivation Introduce Groovy Apply Groovy to Testing Mock Objects TestNG Grand Demo. The Setting. Java shop

kirti
Télécharger la présentation

Unit Testing Java using Groovy and Mock Objects

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Unit Testing Java using Groovy and Mock Objects Walker Hale Human Genome Sequencing Center Baylor College of Medicine

  2. The Plan Groovy makes testing Java better. • Motivation • Introduce Groovy • Apply Groovy to Testing • Mock Objects • TestNG • Grand Demo

  3. The Setting • Java shop • Subversion — for version control • Maven 2 — for most builds • Groovy — for various tasks • Many apps running against a common database and set of libraries

  4. An Ideal Deliverable in Our Shop • Code checked into version control • Builds with maven 2 • Passes all unit tests $ svn checkout \ $repo/my-project/trunk \ my-project $ cd my-project $ mvn test

  5. The Plot • The Motivation • More unit testing! • The Insight • Small changes in the difficulty or unpleasantness of a task produce disproportionately large changes in how much that task is performed. • Enter Groovy

  6. Groovy in 15 Minutes • Almost all Java code is Groovy code • no inner classes • http://groovy.codehaus.org/Differences+from+Java • Groovy adds: • Fun syntactic sugar • Lazy method dispatch • Methods to the standard Java library classes • Closures • Groovy-specific classes • Interactive shell

  7. Syntax Sugar // MapSample.java import java.util.*; public class MapSample { public static void main(String[] args) { Map<Object, Object> m = new LinkedHashMap<Object, Object>(); m.put("red" , 1); m.put("blue", 2); System.out.println(m.getClass()); System.out.println(m); } } // MapSampleG.groovy def m = [red:1, blue:2] println m.getClass() println m // .toString() for Java-style output

  8. Syntax Sugar $ javac MapSample.java $ java MapSample class java.util.LinkedHashMap {red=1, blue=2} $ groovy MapSampleG.groovy class java.util.LinkedHashMap ["red":1, "blue":2] $ groovyc MapSampleG.groovy $ java -cp `pwd`:$GROOVY_EMBED_JAR MapSampleG class java.util.LinkedHashMap ["red":1, "blue":2]

  9. Lazy Dispatch & Expanding JDK // DispatchSample.groovy def x = "Hello World" def l = ["abc", "def"] println x.split() l.addAll x.split().toList() println l l << "more" << "stuff" println l $ groovy DispatchSample.groovy {"Hello", "World"} ["abc", "def", "Hello", "World"] ["abc", "def", "Hello", "World", "more", "stuff"]

  10. Closures 1 // ClosureSample1.groovy def c = { it + it } println c(2) println c("hello ") def foo(Closure cl) { cl(5, 7) } println foo { x, y -> x + y } println foo { x, y -> x * y } $ groovy ClosureSample1.groovy 4 hello hello 12 35

  11. Closures 2 // ClosureSample2.groovy [2, 3, 5].each { println it * it } [red:1, blue:2].each { key, value -> println key * value } $ groovy ClosureSample2.groovy 4 9 25 red blueblue

  12. Closures 3 // ClosureSample3.groovy def strategies = [ add:{ a,b -> a + b }, mult:{ a,b -> a * b } ] [[1,2], [3,4], [5,6]].each { data -> strategies.each { name, code -> printf "%d %4s %2d\n", data, name, code(data) } } $ groovy ClosureSample3.groovy [1, 2] add 3 [1, 2] mult 2 [3, 4] add 7 [3, 4] mult 12 [5, 6] add 11 [5, 6] mult 30

  13. Testing in Groovy • Compiled (not limited) with JUnit 3.8.2 • Adds • GroovyTestCase • New assertions, such as shouldFail • GroovyTestSuite • Simple command line operation • URLs • http://groovy.codehaus.org/Testing+Guide • http://groovy.codehaus.org/Unit+Testing

  14. Demo Time!

  15. Resources • http://groovy.codehaus.org/ • Documentation • Differences+from+Java • Testing+Guide • http://searchgroovy.org/

More Related