Title: JUnit
1JUnit
2What is JUnit?
- Open source Java testing framework used to write
and run repeatable automated tests - JUnit features include
- Assertions for testing expected results
- Test fixtures for sharing common test data
- Test suites for easily organizing and running
tests - Graphical and textual test runners
3JUnit Architecture
4Test Scenarios with JUnit
- Used to test
- A whole object
- Part of an object - a method or some interacting
methods - Interaction between several objects
- A test case represents one scenario
- A tester class contains more than one scenario
- Each senario is written into one test method
5Writing Tests for JUnit
- Need to use the methods of the junit.framework.ass
ert class - javadoc gives a complete description of its
capabilities - Each of these methods checks some condition and
reports back to the test runner whether the test
failed or succeeded. - The test runner uses the result to update the
display. All of the methods return void (i.e.
they are procedures)
6Writing Tests for JUnit (contd)
- A few representative methods of
junit.framework.assert - assertTrue(boolean)
- assertTrue(String, boolean)
- assertEquals(Object, Object)
- assertNull(Object)
- fail(String)
7Sample Assertions (contd)
- static void assertEquals(boolean expected,
boolean actual) Asserts that two
booleans are equal. - static void assertEquals(byte expected,
byte actual) Asserts that two bytes
are equal. - static void assertEquals(char expected,
char actual) Asserts that two chars
are equal. - static void assertEquals(double expected,
double actual, double delta) Asserts
that two doubles are equal concerning a delta. - static void assertEquals(float expected,
float actual, float delta) Asserts
that two floats are equal concerning a delta. - static void assertEquals(int expected,
int actual) Asserts that two ints are
equal. - For a complete list, see
- http//junit.sourceforge.net/javadoc/junit/framewo
rk/Assert.html
8How to write test case
- Two different ways for junit versions 3.X and
4.x. - In Junit 3.X
- 1) import junit.framework.2) extend TestCase.
- 3) name the test methods with a prefix of test
- 4) validate conditions using one of the several
assert methods
9How to write test case (contd)
- In Junit 4.0 and later
- Do not extend from Junit.framework.TestCase
- Do not prefix the test method with test
- Use one of the assert methods
- Run the test using JUnit4TestAdapter
10Simple Example
- public class Math static public int
add(int a, int b) return a
b
11Example JUnit test case
- import junit.framework.
- public class TestMath extends TestCase
- public void testAdd() int num1 3
int num2 2 int total 5
int sum 0 sum Math.add(num1,
num2) assertEquals(sum, total)
12Testing the Stack class
- public class Stack
- public String toString()
- // EFFECTS Returns the String
representation of this Stack from the - // top to the bottom.
- StringBuffer buf new
StringBuffer("") - for (int i size-1 i gt 0 i--)
- if (i lt (size-1))
- buf.append(", ")
-
- buf.append(elementsi.toS
tring()) -
- buf.append("")
- return buf.toString()
-
- public boolean repOk()
- if (elements null) return
false - if (size ! elements.length)
return false - for (int i 0 i lt size i)
13TestCases with JUnit 4.X for Stack
- Necessary classes to be imported
- import org.junit.After
- import org.junit.Before
- import org.junit.Test
- import static org.junit.Assert.assertEquals
- import junit.framework.JUnit4TestAdapter
14 TestCases with JUnit (Contd)
public class StackTest private Stack
stack / setUp method using
_at_Before annotation. Method can be
named anything. / _at_Before public
void runBeforeEachTest() stack
new Stack()
15Test case with JUnit (contd)
- _at_Test public void testRepOk()
- boolean result stack.repOk()
- assertEquals(true, result)
- stack stack.push(new
Integer(1)) - result stack.repOk()
- assertEquals(true, result)
- stack stack.pop()
- result stack.repOk()
- assertEquals(true, result)
- stack stack.push(new
Integer(1)) - stack.top()
- result stack.repOk()
- assertEquals(true, result)
-
-
16Test case with JUnit (contd)
- _at_Test public void testToString()
- stack stack.push(new
Integer(1)) - stack stack.push(new
Integer(2)) - assertEquals("2, 1",
stack.toString()) -
- _at_After public void runAfterEachTest()
- stack null
-
- public static junit.framework.Test
suite() - return new JUnit4TestAdapter(StackT
est.class) -
-
17How to Run Tests
- JUnit provides test drivers
- Character-based test driver runs from the command
line - GUI-based test driver-junit.swingui.TestRunner
- allows to specify the test class to run,
- "Run" button
- examines the chosen class and finds all methods
whose names begin with "test." - If a test fails, Junit gives the location of the
failure and any exceptions that were thrown
18JUnit Installation in Eclipse
- In Eclipse, select Help-gtSoftware Updates-gtFind
and Install - Choose 'Search For New Features to Install' and
select 'Next' - Select 'New Remote Site'
- Enter a name for this server JUnit Factory
- Enter (or copy/paste) this url
http//www.junitfactory.com/update/ - Install all plug-ins in the 'JUnit Factory'
category and restart Eclipse
19Generating Tests in Eclipse
- Select a Java class in Eclipse and click the
Generate Tests ( )button - When the JUnit Factory view says your test is
done, click the link in the Result column to open
it - Select the test and choose Run-gtRun As-gtAgitar
JUnit Test from the main menu
20Eclipse JUnit Plugin
- See tutorial
- http//open.ncsu.edu/se/tutorials/junit/
- http//www.laliluna.de/eclipse-junit-testing-tutor
ial.html