0% found this document useful (0 votes)
40 views75 pages

ST2-Introduction To JUnit

Uploaded by

楷文
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views75 pages

ST2-Introduction To JUnit

Uploaded by

楷文
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 75

Introduction to

JUnit

Nai-Wei Lin
Department of Computer Science and
Software Engineering
National Chung Cheng University
Content

 JUnit framework
 Test classes and test methods
 Assert methods
 Test driven development

2
JUnit
Framework
 JUnit is an open source framework that has been
designed for the purpose of writing and running
tests in the Java programming language.
 JUnit is a regression testing framework for
unit testing.

3
Test Classes and Test Methods
 For each class C under test, define a test
class CTest.
 Test classes inherit class TestCase in
package junit.framework.
 For each method m under test, define a test
method testM.
 Return type of a test method must be void.
 Test method must not have any parameter.
 Test method must not throw any exception.
4
An Example
class Calculator
{
public int sum(int n1, int n2) { return n1+n2; }
}
import junit.framework.TestCase;
class CalculatorTest extends TestCase
{ public void testSum() { /* test sum()
Calculator cal = new Calculator();
assertEquals(2, cal.sum(1,1));
}
}
5
Assert Methods
 assertEquals(expected, actual)
If actual equals expected then does nothing;
otherwise, fails.
 assertEquals(message, expected, actual)
If actual equals expected then does nothing;
otherwise, fails and prints out message.
 assertEquals(expected, actual, delta)
If actual equals expected within delta then
does nothing; otherwise, fails.
 assertEquals(message, expected, actual,
delta).
6
Assert Methods
 assertFalse(condition)
If condition is false then does nothing;
otherwise, fails.
 assertFalse(message, condition).
 assertTrue(condition)
If condition is true then does nothing;
otherwise, fails.
 assertTrue(message, condition).

7
Assert Methods
 AssertNull(object)
If object does not exist then does nothing;
otherwise, fails.
 AssertNull(message, object).
 AssertNotNull(object)
If object exists then does nothing; otherwise,
fails.
 AssertNotNull(message, object).

8
Assert Methods
 AssertSame(expected, actual)
If actual and expected refer to the same
object then does nothing; otherwise, fails.
 AssertSame(message, expected, actual)
 AssertNotSame(expected, actual)
If actual and expected don’t refer to the same
object then does nothing; otherwise, fails.
 AssertNotSame(message, expected, actual)

9
Test Driven
Development
 The test class is developed before the class
under test.
 The development of the class under test
terminates if all test methods in the test class
succeed.

10
An Example
class Complex
{ // an abstract data
type private float re;
private float im;
public Complex() { … }
public Complex(float r, float i) { … }
public float getRe() { … }
public float getIm() { … }
public boolean equals(Complex c) { … }
public Complex add(Complex c) { … }
public Complex sub(Complex c) { … }
public Complex mul(Complex c) { … }
public Complex div(Complex c)
throws
DivByZeroException
} {…} 11
An Example

class ComplexTest extends TestCase


{ public void testComplex() { … }
public void testEquals() { … }
public void testAdd() { … } public
void testSub() { … } public void
testMul() { … } public void
testDiv() { … } public void
testToString() { … }

}

12
An Example

 Create a new Java project “Complex”.

13
14
15
16
17
An Example
 Create a new source folder “test”.

18
19
20
21
An Example
 Create a new JUnit Test Case “ComplexTest” in
source folder “test”.
 If JUnit was not on the build path, then add
Junit on the build path.

22
23
24
25
26
An Example
 getRe() and getIm() can be generated
automatically.
 There is no need to test getRe() and
getIm().
 Change method “test” to “testComplex”.
 Use getRe(), getIm(), and assertEquals() to test
constructors Complex().

27
An Example

public void testComplex()


{ Complex c1 = new Complex();
Complex c2 = new Complex(2.0, 3.0);
assertEquals(0.0, c1.getRe(), 0.001);
assertEquals(0.0, c1.getIm(), 0.001);
assertEquals(2.0, c2.getRe(), 0.001);
assertEquals(3.0, c2.getIm(), 0.001);
}

28
29
An Example
 Automatically generate the frame of the class
“Complex” in source folder “src” using quick
fix.

30
31
32
33
34
An Example
 Automatically generate the frame of the
constructor Complex(double r, double i) in
source folder “src” using quick fix.

35
36
37
38
An Example
 Implement Complex(double r, double i).

39
40
An Example
 Create fields “re” and “im” using quick fix.

41
42
43
44
An Example
 Automatically generate getters and setters.

45
46
47
48
49
An Example
 Automatically generate the frame of the
constructor Complex() in source folder “src”
using quick fix.

50
51
52
53
An Example
 Implement Complex().

54
55
56
An Example
 Run As JUnit Test
 Repeatly modify the constructor until it
passes the test.

57
58
59
An Example
 Use Complex(), getRe() and getIm() to test
equals().
 Use Complex(), getRe() and getIm(), and
equals() to test other methods.

60
An Example

public void testEquals() { Complex


c1 = new Complex();
Complex c2 = new Complex(2.0, 3.0);
Complex c3 = new Complex(0.0, 0.0);
assertFalse(c1.equals(c2));
assertTrue(c1.equals(c3));
}

61
An Example

public void testAdd() {


Complex c1 = new Complex(2.0, 3.0);
Complex c2 = new Complex(1.0, 1.0);
c3 = c1.add(c2);
assertEquals(3.0, c3.getRe());
assertEquals(4.0, c3.getIm());
}

62
An Example

public void testAdd()


{ Complex c1, c2, c3, c4;
c1 = new Complex(2.0, 3.0); c2
= new Complex(1.0, 1.0); c3 =
c1.add(c2);
c4 = new Complex(3.0, 4.0);
assertTrue(c4.equals(c3));
}

63
An Example

public void testSub()


{ Complex c1, c2,
c3;
c1 = new Complex(2.0, 3.0); c2 =
new Complex(1.0, 1.0); c3 =
c1.sub(c2); assertEquals(1.0,
c3.getRe()); assertEquals(2.0,
c3.getIm());
}

64
An Example

public void testSub()


{ Complex c1, c2, c3, c4;
c1 = new Complex(2.0, 3.0); c2
= new Complex(1.0, 1.0); c3 =
c1.sub(c2);
c4 = new Complex(1.0, 2.0);
assertTrue(c4.equals(c3));
}

65
An Example

public void testMul()


{ Complex c1, c2,
c3;
c1 = new Complex(2.0, 3.0); c2
= new Complex(1.0, 1.0); c3 =
c1.mul(c2);
assertEquals(-1.0, c3.getRe());
assertEquals(5.0, c3.getIm());
}

66
An Example

public void testMul()


{ Complex c1, c2, c3, c4;
c1 = new Complex(2.0, 3.0); c2
= new Complex(1.0, 1.0); c3 =
c1.mul(c2);
c4 = new Complex(-1.0, 5.0);
assertTrue(c4.equals(c3));
}

67
An Example
public void testDiv()
{ Complex c1, c2,
c3;
c1 = new Complex(2.0, 3.0); c2
= new Complex(1.0, 1.0); try
{
c3 = c1.div(c2); assertEquals(2.5,
c3.getRe()); assertEquals(0.5,
c3.getIm());
} catch (DivByZeroException e) { assertTrue(“No
exception should be thrown.”,
false);
} 68
An Example

c2 = new Complex();
try {
c3 = c1.div(c2);
assertFalse(“An exception should be thrown.”,
true);
} catch (DivByZeroException e)
{ assertFalse(false);
}
}

69
An Example
public void testDiv()
{ Complex c1, c2,
c3;
c1 = new Complex(2.0, 3.0); c2
= new Complex(1.0, 1.0); try
{
c3 = c1.div(c2);
c4 = new Complex(2.5, 0.5);
assertTrue(c4.equals(c3));
} catch (DivByZeroException e) { assertTrue(“No
exception should be thrown.”,
false);
} 70
An Example

c2 = new Complex();
try {
c3 = c1.div(c2);
assertFalse(“An exception should be thrown.”,
true);
} catch (DivByZeroException e)
{ assertFalse(false);
}
}

71
An Example

public void testToString()


{ Complex c1, c2;
c1 = new Complex();
assertEquals(“0.0+0.0i”, c1.toString());
c2 = new Complex(1.0, 1.0);
assertEquals(“1.0+1.0i”, c2.toString());
}

72
SetUp Method
(Refactoring)
protected void setUp() { /* Initialize common objects c1
= new Complex(2.0, 3.0);
c2 = new Complex(1.0, 1.0);
}
public void testAdd() {
Complex c3;
setUp();
c3 = c1.add(c2);
assertEquals(new
Complex(3.0, 4.0),
c3);
} 73
SetUp Method
class ComplexTest extends TestCase
{ private Complex c1, c2;
public void testComplex() { … }
public void testEquals() { … }
public void testAdd() { … }
public void testSub() { … }
public void testMul() { … }
public void testDiv() { … }
public void testToString() { … }
protected void setUp() { … }

}
74
TearDown Method
class ComplexTest extends TestCase
{ private Complex c1, c2;
public void testComplex() { … }
public void testEquals() { … }
public void testAdd() { … }
public void testSub() { … }
public void testMul() { … }
public void testDiv() { … }
public void testToString() { … }
protected void setUp() { … }
protected void tearDown() { /*
Clean up
75

You might also like