Unit testing Java programs1 Unit testing Java programs Using JUnit 4 “If it isn't tested, it doesn’t work”

Embed Size (px)

Text of Unit testing Java programs1 Unit testing Java programs Using JUnit 4 “If it isn't tested, it...

  • Slide 1
  • Unit testing Java programs1 Unit testing Java programs Using JUnit 4 If it isn't tested, it doesnt work
  • Slide 2
  • Unit testing Java programs2 Requirements for tests Tests must be executable A test must clearly show whether it executed successfully or not The not-so-successful part of the test must not be buried in a pile of test reports.
  • Slide 3
  • Unit testing Java programs3 Which methods should be tested Test a method if you are not 100% sure that the method is correct. Methods that usually does not need testing Simple get and set methods However, you might call get and set methods in testing other (more complex) methods Simple toString methods
  • Slide 4
  • Unit testing Java programs4 Individual test cases Annotate the test method with @org.junit.Test No need to extends any classes or use special method names Unlike JUnit 3 Generally you would like one test class pr. Java class The unit to test is a class.
  • Slide 5
  • Unit testing Java programs5 Fixtures: Before and After Sometimes you have 2 or more tests that must run on the same data. To ease this JUnit introduces the concept of a fixture. You can annotate 2 methods in your test class from @org.junit.Before Executed before each individual test Used to initialize test data Used quite often @org.junit.After Executed after each individual test Used to clean up after the test Examples: Close database or socket connections Not used very often
  • Slide 6
  • Unit testing Java programs6 How to test exceptions JUnit 3: Testing an expected exception try { method(); fail(Exception expected); } catch (ExpectedException ex) { /* ignore */ } JUnit 4: Testing an expected exception Use an annotation @Test (expected = SomeException.class) public void testMetod() { } If testMethod() does not throw SomeException the test fails.
  • Slide 7
  • Unit testing Java programs7 NetBeans assistance JUnit is a plugin to NetBeans And many other IDEs NetBeans can assist you in making TestCases for individual Java class and in assembling the test cases into test suites. Right click the class you want to test Tools JUnit tests Choose JUnit 4 (not JUnit 3) JUnit generates empty tests for each public / protected method in a Java class. Fill you the empty tests and run the test. Like you run an ordinary program
  • Slide 8
  • Unit testing Java programs8 Testing in XP Testing is an important discipline in XP (Extreme Programming) XP idea: Create the test before the code to be tested Writing the test makes you thing about detailed design Test is an executable requirements Writing (and running) test will be a positive experience. We know when a class is done When all tests run
  • Slide 9
  • Unit testing Java programs9 References Beck & Gamma JUnit Cookbook, http://junit.sourceforge.net/doc/cookbook/cookbook.htm Kent Beck & Erich Gamma invented JUnit Kent Beck JUnit https://github.com/KentBeck/junit/wikihttps://github.com/KentBeck/junit/wiki Martin Fowler Refactoring, Addison Wesley 2000 Chapter 4 Building Tests, page 89-102 Extreme Programming, Code the Unit Test First http://www.extremeprogramming.org/rules/testfirst.html http://www.extremeprogramming.org/rules/testfirst.html Testing is an important discipline in XP (eXtreme Programming), which is another Kent Bech invention. Alex Garrett JUnit antipatterns http://www-128.ibm.com/developerworks/opensource/library/os-junit