Company
LOGO
JUnit
Week 8, Session 3
Lecturer : ACB
- STQA IE 31315 -
Institut Teknologi Del
Jl. Sisingamangaraja
Sitoluama, Laguboti 22381
Toba – SUMUT
http://www.del.ac.id
Topics
 What is JUnit?
 Why JUnit framework?
 JUnit mechanics
 Fixtures
 Test suites
 Test runners
 JUnit classes
5/20/2014 STQA/Week09/JUnit 2
What is JUnit?
 An unit-testing tool for Java programs
 Supports Test-Driven-Development
 Agile Method
 Goal: Accelerate programming and
increase the quality of code.
 Not for testing GUI
5/20/2014 STQA/Week09/JUnit 3
JUnit (cont’d)
 Each method under test is treated
as a unit
 The automated testing scripts are
in the form of methods in another
Java source file
 The job of the software
developers/testers is then to
write the automated testing
scripts
5/20/2014 STQA/Week09/JUnit 4
Why Junit?
 Without JUnit, you will have to use
println() to print out some result:
5/20/2014 STQA/Week09/JUnit 5
Why JUnit (cont’d)
Without JUnit:
 No explicit concept of test passing or
failure
 No mechanism to collect results in
structured fashion
 No replicability
5/20/2014 STQA/Week09/JUnit 6
Key Goals of JUnit
 Easy to use to create tests
 Create tests that retain their value over
time
 Leverage existing tests to write new
ones (reusable)
5/20/2014 STQA/Week09/JUnit 7
What does JUnit Provide?
 API for easily creating Java test cases
5/20/2014 STQA/Week09/JUnit 8
What does JUnit Provide?
 Comprehensive assertion facilities
 verify expected versus actual results
5/20/2014 STQA/Week09/JUnit 9
What does JUnit Provide?
 Test runners for running tests
5/20/2014 STQA/Week09/JUnit 10
What does JUnit Provide?
 Reporting
5/20/2014 STQA/Week09/JUnit 11
What does JUnit Provide?
Aggregation facility (test suites)
 Used to collect all the test cases
 Suites can contain testCases and
testSuites
– TestSuite(java.lang.Class theClass,
<java.lang.String name>)
– addTest(Test test) or
addTestSuite(java.lang.Class testClass)
 Suites can have hierarchy
5/20/2014 STQA/Week09/JUnit 12
How to write JUnit-based
testing code (Minimum)
 Include JUnit.jar in the classpath
 Define a subclass of TestCase class
 Define one or more public testXXX()
methods in the subclass
 Write assert methods inside the testXXX
methods()
 Optionally define main() to run the
TestCase in standalone mode
5/20/2014 STQA/Week09/JUnit 13
Test methods
 Test methods has name pattern: testXXX()
 XXX reflects the method of the target class
 Test methods must have no arguments
 Test methods are type of void
5/20/2014 STQA/Week09/JUnit 14
Very Simple Test
import junit.framework.TestCase;
public class SimpleTest extends TestCase {
public SimpleTest(String name) {
super(name);
}
// Test code
public void testSomething() {
System.out.println("About to call assertTrue() method...");
assertTrue(4 == (2 * 2));
}
// You don't have to have main() method, use Test runner
public static void main(String[] args){
junit.textui.TestRunner.run(SimpleTest.class);
}
}
5/20/2014 STQA/Week09/JUnit 15
Assert Statements
 JUnit Assertions are methods starting with
assert
 Determines the success or failure of a test
 An assert is simply a comparison between
 an expected value and an actual value
 Two variants
 assertXXX(...)
 assertXXX(String message, ...)
the message is displayed when the
assertXXX() fails
5/20/2014 STQA/Week09/JUnit 16
Assert Statements
(cont’d)
 Asserts that a condition is true
– assertTrue(boolean condition)
– assertTrue(String message, boolean
condition)
 Asserts that a condition is false
– assertFalse(boolean condition)
– assertFalse(String message, boolean
condition)
5/20/2014 STQA/Week09/JUnit 17
Assert Statements
(cont’d)
 Asserts expected.equals(actual) behavior
– assertEquals(expected, actual)
– assertEquals(String message, expected,
actual)
 Asserts expected == actual behavior
– assertSame(Object expected, Object
actual)
– assertSame(String message, Object
expected, Object actual)
5/20/2014 STQA/Week09/JUnit 18
Assert Statements
(cont’d)
 Asserts object reference is null
– assertNull(Object obj)
– assertNull(String message, Object obj)
 Asserts object reference is not null
– assertNotNull(Object obj)
– assertNotNull(String message, Object obj)
 Forces a failure
– fail()
– fail(String message)
5/20/2014 STQA/Week09/JUnit 19
Fixtures
 setUp() and tearDown() used to initialize
and release common test data
 setUp() is run before every test invocation
 tearDown() is run after every test method
5/20/2014 STQA/Week09/JUnit 20
JUnit Classes
5/20/2014 STQA/Week09/JUnit 21
References
 www.junit.org
 http://www.javapassion.com/javase/javaju
nit.pdf
5/20/2014 STQA/Week09/JUnit 22
THANK YOU
5/20/2014 STQA/Week09/JUnit 23

Introduction To J unit

  • 1.
    Company LOGO JUnit Week 8, Session3 Lecturer : ACB - STQA IE 31315 - Institut Teknologi Del Jl. Sisingamangaraja Sitoluama, Laguboti 22381 Toba – SUMUT http://www.del.ac.id
  • 2.
    Topics  What isJUnit?  Why JUnit framework?  JUnit mechanics  Fixtures  Test suites  Test runners  JUnit classes 5/20/2014 STQA/Week09/JUnit 2
  • 3.
    What is JUnit? An unit-testing tool for Java programs  Supports Test-Driven-Development  Agile Method  Goal: Accelerate programming and increase the quality of code.  Not for testing GUI 5/20/2014 STQA/Week09/JUnit 3
  • 4.
    JUnit (cont’d)  Eachmethod under test is treated as a unit  The automated testing scripts are in the form of methods in another Java source file  The job of the software developers/testers is then to write the automated testing scripts 5/20/2014 STQA/Week09/JUnit 4
  • 5.
    Why Junit?  WithoutJUnit, you will have to use println() to print out some result: 5/20/2014 STQA/Week09/JUnit 5
  • 6.
    Why JUnit (cont’d) WithoutJUnit:  No explicit concept of test passing or failure  No mechanism to collect results in structured fashion  No replicability 5/20/2014 STQA/Week09/JUnit 6
  • 7.
    Key Goals ofJUnit  Easy to use to create tests  Create tests that retain their value over time  Leverage existing tests to write new ones (reusable) 5/20/2014 STQA/Week09/JUnit 7
  • 8.
    What does JUnitProvide?  API for easily creating Java test cases 5/20/2014 STQA/Week09/JUnit 8
  • 9.
    What does JUnitProvide?  Comprehensive assertion facilities  verify expected versus actual results 5/20/2014 STQA/Week09/JUnit 9
  • 10.
    What does JUnitProvide?  Test runners for running tests 5/20/2014 STQA/Week09/JUnit 10
  • 11.
    What does JUnitProvide?  Reporting 5/20/2014 STQA/Week09/JUnit 11
  • 12.
    What does JUnitProvide? Aggregation facility (test suites)  Used to collect all the test cases  Suites can contain testCases and testSuites – TestSuite(java.lang.Class theClass, <java.lang.String name>) – addTest(Test test) or addTestSuite(java.lang.Class testClass)  Suites can have hierarchy 5/20/2014 STQA/Week09/JUnit 12
  • 13.
    How to writeJUnit-based testing code (Minimum)  Include JUnit.jar in the classpath  Define a subclass of TestCase class  Define one or more public testXXX() methods in the subclass  Write assert methods inside the testXXX methods()  Optionally define main() to run the TestCase in standalone mode 5/20/2014 STQA/Week09/JUnit 13
  • 14.
    Test methods  Testmethods has name pattern: testXXX()  XXX reflects the method of the target class  Test methods must have no arguments  Test methods are type of void 5/20/2014 STQA/Week09/JUnit 14
  • 15.
    Very Simple Test importjunit.framework.TestCase; public class SimpleTest extends TestCase { public SimpleTest(String name) { super(name); } // Test code public void testSomething() { System.out.println("About to call assertTrue() method..."); assertTrue(4 == (2 * 2)); } // You don't have to have main() method, use Test runner public static void main(String[] args){ junit.textui.TestRunner.run(SimpleTest.class); } } 5/20/2014 STQA/Week09/JUnit 15
  • 16.
    Assert Statements  JUnitAssertions are methods starting with assert  Determines the success or failure of a test  An assert is simply a comparison between  an expected value and an actual value  Two variants  assertXXX(...)  assertXXX(String message, ...) the message is displayed when the assertXXX() fails 5/20/2014 STQA/Week09/JUnit 16
  • 17.
    Assert Statements (cont’d)  Assertsthat a condition is true – assertTrue(boolean condition) – assertTrue(String message, boolean condition)  Asserts that a condition is false – assertFalse(boolean condition) – assertFalse(String message, boolean condition) 5/20/2014 STQA/Week09/JUnit 17
  • 18.
    Assert Statements (cont’d)  Assertsexpected.equals(actual) behavior – assertEquals(expected, actual) – assertEquals(String message, expected, actual)  Asserts expected == actual behavior – assertSame(Object expected, Object actual) – assertSame(String message, Object expected, Object actual) 5/20/2014 STQA/Week09/JUnit 18
  • 19.
    Assert Statements (cont’d)  Assertsobject reference is null – assertNull(Object obj) – assertNull(String message, Object obj)  Asserts object reference is not null – assertNotNull(Object obj) – assertNotNull(String message, Object obj)  Forces a failure – fail() – fail(String message) 5/20/2014 STQA/Week09/JUnit 19
  • 20.
    Fixtures  setUp() andtearDown() used to initialize and release common test data  setUp() is run before every test invocation  tearDown() is run after every test method 5/20/2014 STQA/Week09/JUnit 20
  • 21.
  • 22.
  • 23.