Unit Testing
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Unit Testing

  • 7,147 views
Uploaded on

Presentation on Unit Testing and Test Driven Development using JUnit.

Presentation on Unit Testing and Test Driven Development using JUnit.

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
7,147
On Slideshare
6,914
From Embeds
233
Number of Embeds
6

Actions

Shares
Downloads
239
Comments
0
Likes
3

Embeds 233

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

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. Unit Testing Subhash Chandran S WizTools.org A Java Programmer's Approach
  • 2. Testing What the program is supposed to do == What the program actually does
  • 3. Types
    • Unit
    • Integration / Functional
    • System
  • 4. Unit Testing, Java Style
    • JUnit
    • TestNG (Will not be discussed in this session)
  • 5. JUnit
    • Version 3.x
    • Version 4.x – Java 5 and above features
  • 6. What we want to do? Add Remove
  • 7. 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{ ... }
  • 8. 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); } }
  • 9. 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); } }
  • 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); }
  • 11. Test Class public class ShoppingCartTest ... { private ShoppingCart cart; public void testAdd(){ cart = new ShoppingCart(); ... } public void testRemove(){ cart = new ShoppingCart(); ... } } Duplication!
  • 12. Lifecycle 3.x setUp () testXXX1() tearDown () setUp () testXXX2() tearDown () setUp () testXXX3() tearDown ()
  • 13. Lifecycle 4.x @ Before @Test XXX1 @ After @ Before @Test XXX2 @ After @ Before @Test XXX3 @ After
  • 14. 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 }
  • 15. Other Assert Methods
    • assertNull(...)
    • assertArrayEquals(..., ...)
    • assertEquals(..., ...)
    • assertSame(..., ...)
    • assertTrue(...)
    • and ”Not” of all the above.
  • 16. Our Approach (so far)...
    • We created the domain classes
    • then
    • the test cases to unit test them
    Another approach...
  • 17. Test Driven Development (TDD)
    • First write the test case
    • Then program domain classes to comply to it
    What the #@&*?
  • 18. When programming... Details, details and more implementation details...
  • 19. What Tests Do?
    • Tests define the behavior
    • Tests define what you want to achieve
    • Tests define what your program should do
  • 20. 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
  • 21. So TDD! And save enough time to enjoy Life!
  • 22. What we covered?
    • Meaning and types of testing
    • JUnit 3.x and 4.x
    • TDD
  • 23. Action Item
    • Practice TDD :-)
    Thanks and Bye! Subhash. subwiz (at) gmail.com