This document provides an overview of JUnit, a unit testing framework for Java. It discusses how JUnit allows developers to write repeatable tests and test classes in a way that each test can run independently without affecting other tests. The document demonstrates how to write test cases using JUnit annotations and assertions for an AccountService class. It also covers test suites that group multiple test cases, the JUnit testing lifecycle using annotations, and dependencies needed to use JUnit.
2. 03/17/16 www.SunilOS.com 2
Introduction
JUnit is an open source Java testing framework
It is used to write and run repeatable tests by
Developers.
Testing done by JUnit is called Unit Testing.
JUnit was originally written by Erich Gamma and
Kent Beck.
3. Test A Class – AccountService
Lets have a Class that
provides Account Services
Here are methods to
perform account services.
o add
o delete
o update
o get
o list
o getBalance
03/17/16 www.SunilOS.com 3
AccountService
+add(dto)
+update(dto)
+delete(dto)
+get(id)
+list() : List
+getBalance() : double
AccountDTO
+accssor
+id
+number
+name
+type
+balance
4. Conventional Testing Approach
Write test in the main method
public class TestAccount {
o public static void main(String[] args) {
AccountDTO dto = new AccountDTO();
dto.setId(1);
dto.setNumber("SB123456");
dto.setName("sunRays Technologies");
dto.setBalance(10000);
AccountService.add(dto); //Test#1
AccountService.update(dto); //Test#2
AccountService.delete(dto); //Test#3
dto = AccountService.get(1); //Test#4
o }
}
03/17/16 www.SunilOS.com 4
5. Problem ?
AccountService.add(dto); //Test#1
AccountService.update(dto); //Test#2
AccountService.delete(dto); //Test#3
dto = AccountService.get(1); //Test#4
Any exception on any Test will
terminate subsequent tests from the
execution.
Say if Test#2 has exception then
Test#3 and Test#4 will not be
executed. If Test#1 has exception then
Test#2,#3, and #4 will not be executed.
03/17/16 www.SunilOS.com 5
6. Solution
JUnit Framework.
Prepare Test Programs.
Test program is called
Testcase.
One Model/Service class will
have one JUnit Testcase.
Testing is called Unit Testing.
03/17/16 www.SunilOS.com 6
7. What is Unit Testcase
A Unit Testcase is a test program to test a
Usecase functionality.
A Testcase tests the response of a single
method to a particular set of input.
Unit Testcases are written and run by
Developers.
03/17/16 www.SunilOS.com 7
8. What is JUnit
JUnit is an open source Java testing
framework
It is used to write and run repeatable tests
by Developers.
Testing done by JUnit is called Unit Testing.
JUnit was originally written by Erich Gamma
and Kent Beck.
03/17/16 www.SunilOS.com 8
9. Features of JUnit
Fail and Assertion methods to test expected
results.
Test suites to execute multiple test cases
together.
Graphical and textual test runners.
03/17/16 www.SunilOS.com 9
11. What is regression testing
When you test new functionality along with
old functionality, is called regression testing.
Suppose you recently have developed
fundTransfer() method, when you test
openAccount(), deposit() and
withdraw() methods along with newly
created fundTransfer() method then it is
called regression testing.
03/17/16 www.SunilOS.com 11
12. Add testcase
public class AccountServiceTestcase {
o @Test
o public void testAdd() {
AccountDTO dto = new AccountDTO();
dto.setId(1);
dto.setNumber("SB123456");
AccountService.add(dto);
dto = AccountService.get(1);
// If DTO is null then record is not added and testcase is fail
if(dto == null){
fail("Account is NOT added");
}
o }
}
03/17/16 www.SunilOS.com 12
13. Add testcase assert
public class AccountServiceTestcase {
o @Test
o public void testAdd() {
AccountDTO dto = new AccountDTO();
dto.setId(1);
dto.setNumber("SB123456");
AccountService.add(dto);
dto = AccountService.get(1);
// If DTO is null then record is not added and testcase is fail
assertNull("Account is NOT deleted", dto);
o }
}
03/17/16 www.SunilOS.com 13
14. Delete testcase assert
public class AccountServiceTestcase {
o @Test
o public void testDelete() {
AccountDTO dto = new AccountDTO();
dto.setId(1);
AccountService.delete(dto);
dto = AccountService.get(1);
// If DTO is NOT null then record is not deleted and testcase is fail
assertNotNull("Account is NOT deleted", dto);
o }
}
03/17/16 www.SunilOS.com 14
16. Annotations
@Test: public void method, annotated by this
annotation is run as test case.
@Ignore: It is used to temporary disable a test or group of
tests to be executed. If a class is annotated by @Ignore
then all test methods of this class will be ignored.
03/17/16 www.SunilOS.com 16
17. Lifecycle Methods
A JUnit class may contain life-cycle
methods.
These methods are defined by following
annotations.
o @BeforeClass
o @AfterClass
o @Before
o @After
03/17/16 www.SunilOS.com 17
19. Life Cycle Annotation
@BeforeClass: An annotated public static void no-
argument method will be executed before execution of any
test method in the class.
@AfterClass: An annotated public static void no-
argument method will be executed after all test methods of
this class are executed.
@Before: this method will be called before each test
method in the Class.
@After: this method will be called after each test method
in the Class.
03/17/16 www.SunilOS.com 19
20. Test Suite
A test suite is a collection of test cases.
A test runner is software that runs tests and
reports results.
03/17/16 www.SunilOS.com 20
21. Test Suite
public class AllTests {
public static TestSuite getSuite() {
o TestSuite suite = new TestSuite(“Test All ");
o suite.addTestSuite(AccountServiceTestcase.class);
o suite.addTestSuite(UserServiceTestcase.class);
o return suite;
}
03/17/16 www.SunilOS.com 21
22. Test Runner
public static void main(String args[]){
junit.textui.TestRunner.run(getSuite());
}
03/17/16 www.SunilOS.com 22
23. JUnit Dependency
Jar
o junit-4.12.jar
Maven Dependency
o <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
o </dependency>
03/17/16 www.SunilOS.com 23
24. Disclaimer
This is an educational presentation to enhance the
skill of computer science students.
This presentation is available for free to computer
science students.
Some internet images from different URLs are
used in this presentation to simplify technical
examples and correlate examples with the real
world.
We are grateful to owners of these URLs and
pictures.
www.SunilOS.com 2403/17/16