Unit Testing
Upcoming SlideShare
Loading in...5
×
 

Unit Testing

on

  • 6,860 views

Presentation on Unit Testing and Test Driven Development using JUnit.

Presentation on Unit Testing and Test Driven Development using JUnit.

Statistics

Views

Total Views
6,860
Slideshare-icon Views on SlideShare
6,629
Embed Views
231

Actions

Likes
3
Downloads
231
Comments
0

6 Embeds 231

http://jroller.com 164
http://www.jroller.com 46
http://www.slideshare.net 10
http://www.linkedin.com 9
http://webcache.googleusercontent.com 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Unit Testing Unit Testing Presentation Transcript

    • Unit Testing Subhash Chandran S WizTools.org A Java Programmer's Approach
    • Testing What the program is supposed to do == What the program actually does
    • Types
      • Unit
      • Integration / Functional
      • System
    • Unit Testing, Java Style
      • JUnit
      • TestNG (Will not be discussed in this session)
    • JUnit
      • Version 3.x
      • Version 4.x – Java 5 and above features
    • What we want to do? Add Remove
    • How we did it // ShoppingCart.java public class ShoppingCart{ public void add(Product p, int quantity){ ... } public void remove(Product p, int quantity){ ... } } // Tomato.java public class Tomato implements Product{ ... }
    • Add Test in JUnit 3.x import junit.framework.TestCase; public class ShoppingCartTest extends TestCase { private ShoppingCart cart; public void testAdd (){ cart = new ShoppingCart(); Tomato t = new Tomato(); cart.add(t, 10); // Product and quantity assertEquals (cart.count(), 10); } }
    • Add Test in JUnit 4.x import org.junit.Test; import static org.junit.Assert.*; public class ShoppingCartTest{ private ShoppingCart cart; @Test public void testAdd() { cart = new ShoppingCart(); Tomato t = new Tomato(); cart.add(t, 10); assertEquals (cart.count(), 10); } }
    • Remove Test // Add @Test annotation for JUnit 4.x public void testRemove(){ cart = new ShoppingCart(); Tomato t = new Tomato(); cart.add(t, 10); cart.remove(t, 6); assertEquals(cart.count(), 4); }
    • Test Class public class ShoppingCartTest ... { private ShoppingCart cart; public void testAdd(){ cart = new ShoppingCart(); ... } public void testRemove(){ cart = new ShoppingCart(); ... } } Duplication!
    • Lifecycle 3.x setUp () testXXX1() tearDown () setUp () testXXX2() tearDown () setUp () testXXX3() tearDown ()
    • Lifecycle 4.x @ Before @Test XXX1 @ After @ Before @Test XXX2 @ After @ Before @Test XXX3 @ After
    • Final Test Class public class ShoppingCartTest ... { ... // @org.junit.Before to be added for JUnit 4.x protected void setUp (){ cart = new ShoppingCart(); } // @org.junit.After to be added for JUnit 4.x protected void tearDown (){ cart = null; } // test* methods follow }
    • Other Assert Methods
      • assertNull(...)
      • assertArrayEquals(..., ...)
      • assertEquals(..., ...)
      • assertSame(..., ...)
      • assertTrue(...)
      • and ”Not” of all the above.
    • Our Approach (so far)...
      • We created the domain classes
      • then
      • the test cases to unit test them
      Another approach...
    • Test Driven Development (TDD)
      • First write the test case
      • Then program domain classes to comply to it
      What the #@&*?
    • When programming... Details, details and more implementation details...
    • What Tests Do?
      • Tests define the behavior
      • Tests define what you want to achieve
      • Tests define what your program should do
    • When All These Are Defined...
      • Your design is beautiful
      • When dealing with implementation details, you will not loose focus
      • You have a execution environment for running your code
    • So TDD! And save enough time to enjoy Life!
    • What we covered?
      • Meaning and types of testing
      • JUnit 3.x and 4.x
      • TDD
    • Action Item
      • Practice TDD :-)
      Thanks and Bye! Subhash. subwiz (at) gmail.com