CSC 216/001
-
Upload
whilemina-stevenson -
Category
Documents
-
view
27 -
download
0
description
Transcript of CSC 216/001
CSC 216/001CSC 216/001
Lecture 4Lecture 4
Unit TestingUnit Testing
Why is it called “unit” testing? When should tests be written?
Before the code for a class is written. After the code for a class is written,
but before other classes are written. After code for all classes is written,
but before the classes are integrated. After the classes are integrated.
Why is it called “unit” testing? When should tests be written?
Before the code for a class is written. After the code for a class is written,
but before other classes are written. After code for all classes is written,
but before the classes are integrated. After the classes are integrated.
Testing at the BoundariesTesting at the Boundaries
What does this mean? Example (from the online notes):
For a method that removes an element from a list: Test on a list with 1 element. Test on a list that does not contain the element to be
removed. Test on a list where the element is at the
beginning/end of the list. Test on a list where the element appears multiple
times. Test on an empty list.
What does this mean? Example (from the online notes):
For a method that removes an element from a list: Test on a list with 1 element. Test on a list that does not contain the element to be
removed. Test on a list where the element is at the
beginning/end of the list. Test on a list where the element appears multiple
times. Test on an empty list.
Testing a Square-Root Routine
Testing a Square-Root Routine
From the text: What kinds of tests were proposed? Test numbers greater than 1. Test numbers less than 1. Test negative numbers. Test randomly generated numbers. Apply the inverse of the square-root
operation.
From the text: What kinds of tests were proposed? Test numbers greater than 1. Test numbers less than 1. Test negative numbers. Test randomly generated numbers. Apply the inverse of the square-root
operation.
Testing a StackTesting a Stack
Suppose we have a Stack class implemented in an integer array. Stack(int n); void push(int i); int pop(); int top();
What test cases should we use? (Discuss in groups.)
Suppose we have a Stack class implemented in an integer array. Stack(int n); void push(int i); int pop(); int top();
What test cases should we use? (Discuss in groups.)
What is JUnit?What is JUnit?
Regression testing framework Written by Erich Gamma and Kent
Beck Used for unit testing in Java Open Source Released under IBM's CPL
Regression testing framework Written by Erich Gamma and Kent
Beck Used for unit testing in Java Open Source Released under IBM's CPL
Testing » Where Does JUnit Come From?Testing » Where Does JUnit Come From? JUnit’s web site:
http://junit.org/index.htm Eclipse includes JUnit
Eclipse provides new GUI to run JUnit test cases and suites
JDT tools include a plug-in that integrates JUnit into the Java IDE
Allows you to define regression tests for your code and run them from the Java IDE.
JUnit’s web site: http://junit.org/index.htm
Eclipse includes JUnit Eclipse provides new GUI to run JUnit test
cases and suites JDT tools include a plug-in that integrates
JUnit into the Java IDE Allows you to define regression tests for
your code and run them from the Java IDE.
Testing » JUnit Test CasesTesting » JUnit Test Cases
JUnit Test Cases Test case
Runs multiple tests Implemented as subclass of TestCase Define instance variables that store the state
of the tests in the class Initialize TestCase by overriding setUp method Cleanup after test case is done by overriding tearDown method
The Test framework will invoke the setUp and tearDown methods.
JUnit Test Cases Test case
Runs multiple tests Implemented as subclass of TestCase Define instance variables that store the state
of the tests in the class Initialize TestCase by overriding setUp method Cleanup after test case is done by overriding tearDown method
The Test framework will invoke the setUp and tearDown methods.
Testing » Creating JUnit Test Cases in EclipseTesting » Creating JUnit Test Cases in Eclipse
Create a new package to contain your test case classes.
Add the JUnit JAR file to the project’s buildpath.
Create a new package to contain your test case classes.
Add the JUnit JAR file to the project’s buildpath.
Testing » Creating JUnit Test Cases in EclipseTesting » Creating JUnit Test Cases in Eclipse Select your testing package
From the context menu select New » JUnit Test Case. This opens the New JUnit Test Case Wizard.
Fill in the name of your test case in the Name field.
Select the method stubs that you want Eclipse to generate
This will create the corresponding class in your testing package
Select your testing package
From the context menu select New » JUnit Test Case. This opens the New JUnit Test Case Wizard.
Fill in the name of your test case in the Name field.
Select the method stubs that you want Eclipse to generate
This will create the corresponding class in your testing package
Testing » JUnit TestCase TemplateTesting » JUnit TestCase Template
public class NewTestCase extends TestCase {
public static void main(String[] args) {}
public NewTestCase(String arg0) {super(arg0);
}
protected void setUp() throws Exception {super.setUp();
}
protected void tearDown() throws Exception {super.tearDown();
}}
public class NewTestCase extends TestCase {
public static void main(String[] args) {}
public NewTestCase(String arg0) {super(arg0);
}
protected void setUp() throws Exception {super.setUp();
}
protected void tearDown() throws Exception {super.tearDown();
}}
Testing » Adding Tests to Test CasesTesting » Adding Tests to Test Cases Any method in a TestCase class is
considered a test if it begins with the word “test”. You can write many tests (have many
test methods) Each test method should use a
variety of assert… methods to perform tests on the state of its class. Assert methods are inherited
Any method in a TestCase class is considered a test if it begins with the word “test”. You can write many tests (have many
test methods) Each test method should use a
variety of assert… methods to perform tests on the state of its class. Assert methods are inherited
Testing » JUnit Assert MethodsTesting » JUnit Assert Methods Assert methods include:
assertEquals(x,y) assertFalse(boolean) assertTrue(boolean) assertNull(object) assertNotNull(object) assertSame(firstObject, secondObject) assertNotSame(firstObject, secondObject)
Assert methods include: assertEquals(x,y) assertFalse(boolean) assertTrue(boolean) assertNull(object) assertNotNull(object) assertSame(firstObject, secondObject) assertNotSame(firstObject, secondObject)
Testing » Adding Two Tests to JUnit Test CaseTesting » Adding Two Tests to JUnit Test Case
public class NewTestCase extends TestCase {
public static void main(String[] args) {}
public NewTestCase(String arg0) {super(arg0);
}
protected void setUp() throws Exception {super.setUp();
}
protected void tearDown() throws Exception {super.tearDown();
}public void testCompareSucceed() {
assertEquals(0, 0); //this assertion will succeed}public void testCompareFail() { assertEquals(0, 1); //this assertion will fail}
}
public class NewTestCase extends TestCase {
public static void main(String[] args) {}
public NewTestCase(String arg0) {super(arg0);
}
protected void setUp() throws Exception {super.setUp();
}
protected void tearDown() throws Exception {super.tearDown();
}public void testCompareSucceed() {
assertEquals(0, 0); //this assertion will succeed}public void testCompareFail() { assertEquals(0, 1); //this assertion will fail}
}
Testing » Running JUnit Test CaseTesting » Running JUnit Test Case Select TestCase
class From the Run menu
select Run » Run As » JUnit Test
This will run the tests in your TestCase class along with the setUp and tearDown methods
You will then get a report in the JUnit window
Select TestCase class
From the Run menu select Run » Run As » JUnit Test
This will run the tests in your TestCase class along with the setUp and tearDown methods
You will then get a report in the JUnit window
Testing » JUnit WindowTesting » JUnit Window
Red indicates a test has failed
You can see which test failed
You can see the call trace leading to the failure
If you wish to see the tests in TestCase click on the Hierarchy tab
Red indicates a test has failed
You can see which test failed
You can see the call trace leading to the failure
If you wish to see the tests in TestCase click on the Hierarchy tab
Testing » JUnit WindowTesting » JUnit Window
You can see how many tests ran
How many failures occurred
You can see the details of the failure
Errors occur when exceptions are thrown (e.g., when assertions fail)
You can see how many tests ran
How many failures occurred
You can see the details of the failure
Errors occur when exceptions are thrown (e.g., when assertions fail)