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