Unit Testing with JUnit

batterycopperInternet και Εφαρμογές Web

12 Νοε 2013 (πριν από 3 χρόνια και 9 μήνες)

78 εμφανίσεις

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.
New File

2.
Choose file type: Junit

3.
Choose Test for Existing Class

4.
Junit test with all stubs
created for that class

5.
Fill in the individual tests

6.
Run Tests (Netbeans options)

Note: If this option doesn’t exist use New
File
-
>Other
-
>Junit
-
>Test for existing
class

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