Unit Testing with JUnit

Download Report

Transcript Unit Testing with JUnit

Unit Testing with JUnit
Dan Fleck
Spring 2010
What is Unit Testing?
A procedure to validate
individual units of Source Code
Example: A procedure,
method or class
Validating each individual
piece reduces errors when
integrating the pieces together
later
Automated Unit Tests with
JUnit
Junit is a unit testing framework
for Java
Allows you to write unit tests in
Java using a simple interface
Automated testing enables
running and rerunning tests
very easily and quickly
An example unit test
@Test
public void testCellChangePropagates() {
Spreadsheet sheet =
new Spreadsheet();
sheet.put("A1", "5");
sheet.put("A2", "=A1");
sheet.put("A1", "10");
assertEquals("10",sheet.get("A2"));
}
Junit Assert
 During a test use Asserts to specify if the test passed or failed
 org.junit.Assert – allows you to test if certain ideas hold by
asserting results:
http://junit.sourceforge.net/javadoc/












assertEquals(expected, actual)
assertEquals(message, expected, actual)
assertEquals(expected, actual, delta)
assertEquals(message, expected, actual, delta)
assertFalse(condition)
assertFalse(message, condition)
Assert(Not)Null(object)
Assert(Not)Null(message, object)
Assert(Not)Same(expected, actual)
Assert(Not)Same(message, expected, actual)
assertTrue(condition)
assertTrue(message, condition)
Junit Methods – Java annotations
 @BeforeClass // Run before all tests in class
 public static void setUpClass() throws Exception {}
 @AfterClass // Run after all tests in class
 public static void tearDownClass() throws Exception {}
 @Before // Run before each test in class
 public void setUp() {}
 @After // Run after each test in class
 public void tearDown() {}
 @Test
 public void testMain() {
 http://www.cavdar.net/2008/07/21/junit-4-in-60-seconds/
Junit with Netbeans
1.
2.
3.
4.
Note: If this option doesn’t exist use New
File->Other->Junit->Test for existing
class
New File
Choose file type: Junit
Choose Test for Existing Class
Junit test with all stubs
created for that class
5. Fill in the individual tests
6. Run Tests (Netbeans options)
Junit
Documentation/Tutorials
 http://junit.sourceforge.net/
 http://code.google.com/p/t2framework/wiki/J
UnitQuickTutorial
 http://junit.sourceforge.net/doc/testinfected/te
sting.htm (older)
Lines of code coverage analysis
Determining which lines of
code your tests have exercised
and which they have not
Allows you to detect if your unit
tests (or system tests) are
adequately covering all
possibilities or not
This is just one way to test
Lines of code coverage
analysis with Netbeans
• Install Unit Test Code Coverage
Viewer module
• (See next slide for instructions)
• Write a Unit Test
• Run test and view highlighted
code
Installing the Code
Coverage Plugin
 Go into Netbeans -> Tools -> Plugins
Search for "Code Coverage" and install it.
 If you don't see it in the list of available plugins, go to
the "Settings" tab and check "Netbeans Beta”,
reload the catalog, and then try again.
 If you don't see Netbeans Beta in the list on Settings,
add the following source for plugins:
Netbeans Beta
http://updates.netbeans.org/netbeans/updates/6.8
/uc/final/beta/catalog.xml.gz
How do you you combine
coverage with traditional
system test scripts?
Traditional system testing uses scripts
- 1. Enter salary
- 2. Enter number of dependents
- 3. Click “Calculate Taxes” button
- …
To combine this with coverage, launch the
GUI while capturing coverage statistics
Run the test case to determine coverage
How to write test cases
See sample system test case
 http://www.cs.gmu.edu/~kdobolyi/cs421/SAM
PLESystemTestCase.doc
See sample unit test case
 http://www.cs.gmu.edu/~kdobolyi/cs421/Mai
n.java
 http://www.cs.gmu.edu/~kdobolyi/cs421/Trian
gle.java
 http://www.cs.gmu.edu/~kdobolyi/cs421/Trian
gle.java
Summary
Unit tests can help test the
details of your program
Automated unit tests provide
constant visibility and easy
retesting
Test coverage supplies
valuable information when
running both unit tests and
system tests