Transcript PPT
Overview of Eclipse Lectures
1.
2.
3.
4.
5.
6.
7.
Overview
“Lecture 0”
Installing and Running
Building and Running Java Classes
Debugging
Lecture 2
Testing with JUnit
Refactoring
Lecture 3
Version Control
CSC/ECE 517 Fall 2010 Lec. 2
1
Module Road Map
1.
2.
3.
Overview
Installing and Running
Building and Running Java Classes
5.
6.
7.
Testing with JUnit
Refactoring
Version Control with CVS
4. Debugging
Debug Perspective
Debug Session
Breakpoint
Debug Views
Breakpoint Types
Evaluating and Displaying Expressions
CSC/ECE 517 Fall 2010 Lec. 2
2
Debugging »
Debugging in Eclipse
The Java Debugger
Part of Eclipse Java Development Tools (JDT)
̎̎̎̎̎̎̎̎̎̎̎̎
̎̎̎̎̎̎̎̎̎̎̎̎
More than System.out.printn(̎̎̎̎error̎̎̎̎)
Detects errors as code executes
Correct errors as code executes
Actions you can perform debugging include:
Control Execution
Set simple breakpoints
Set conditional breakpoints
Review and change variable values
Hot code replace (feature new to JRE 1.4)
CSC/ECE 517 Fall 2010 Lec. 2
3
Debugging »
Debug Perspective
Threads and Monitor View
Variable View
Editor View
Console View
Outline View
Tasks View
CSC/ECE 517 Fall 2010 Lec. 2
4
Debugging »
Breakpoint
Simple Breakpoint
Stops the execution of a
program at the point
Thread suspends at the
location where the
breakpoint is set
Setting a breakpoint
CTRL+Shift+B at
current point in editor
line
Double click in editor’s
marker bar at current
line
CSC/ECE 517 Fall 2010 Lec. 2
5
Debugging »
Select Java class
containing the following:
Starting a Debugging Session
main() method
Resulting execution will
pass breakpoint
Select Run » Debug As »
Java Application
Or Select Debug As »
Java Application from the
drop-down menu on the
Debug tool bar.
CSC/ECE 517 Fall 2010 Lec. 2
6
Debugging »
Debug Session
Execution suspends
prior to the line with a
breakpoint
You can set multiple
breakpoints
CSC/ECE 517 Fall 2010 Lec. 2
7
Debugging »
Deleting Breakpoints
Double-click on the breakpoint in the editor
CSC/ECE 517 Fall 2010 Lec. 2
8
Debugging »
Step Into or F5:
For methods, execute
method and suspend on first
statement in the method
For assignments, similar to
Step Over
For conditionals, similar to
Step Over
Step Over or F6
Control Execution From Breakpoint…
Execute next statement
Step Return or F7
Resume execution to the end
of the method on the next
line after it was invoked
CSC/ECE 517 Fall 2010 Lec. 2
9
Debugging »
Resume or F8
Control Execution From Breakpoint
Continue execution
until program ends or
another breakpoint is
reached
Terminate
Stops the current
execution thread
CSC/ECE 517 Fall 2010 Lec. 2
10
Debugging »
Variables and Fields
To see the values
bound to fields:
Use Variables View
Select variable in editor
and select Inspect
CSC/ECE 517 Fall 2010 Lec. 2
11
Debugging »
Code Debugging in this Module
public class Debug {
private int something = 0;
private Vector list = new Vector();
public void firstMethod(){
thirdMethod(something);
something = something + 1;
}
public void secondMethod(){
thirdMethod(something);
something = something + 2;
}
public void thirdMethod(int value){
something = something + value;
}
public static void main(String[] args) {
Debug debug = new Debug();
debug.firstMethod();
debug.secondMethod();}
}
CSC/ECE 517 Fall 2010 Lec. 2
12
Debugging »
Variables View
Shows all fields of instance where breakpoint
occurred
Select this to see all fields
Select any field to see value
If field is bound to an object, you can select Inspect
from the menu to view its fields and values
CSC/ECE 517 Fall 2010 Lec. 2
13
Debugging »
Changing Field Values
To change field value:
Select field in Variables view
Select Change Variable Value from the menu
Enter new value into Set Variable Value window
Click OK
CSC/ECE 517 Fall 2010 Lec. 2
14
Debugging »
Remembers all objects
you have inspected
Displays the fields of
the object
Expressions View
You can see the values
of the fields
You can Inspect the
fields
Opens when:
You Inspect an object
You click on the
Expressions tab
CSC/ECE 517 Fall 2010 Lec. 2
15
Debugging »
Lists all available
breakpoints
Can be used for
manipulating breakpoints
(through the views menu):
Breakpoint View
Enabling
Disabling
Removing
Also displays breakpoints
properties
Accessed like other
debugging views
CSC/ECE 517 Fall 2010 Lec. 2
16
Debugging »
Shows:
Debug View
Active threads
Current stack frame
when execution has
stopped
Previous stack frames
Method and variables
are shown in the editor
for the selected frame
Update in the editor
updates the source
CSC/ECE 517 Fall 2010 Lec. 2
17
Debugging »
Breakpoints can be set for the following Java
entities:
Breakpoint Types
Line (simple breakpoint)
Method
Field (watchpoint)
Java Exception
Each breakpoint is set a different way and
has different properties
CSC/ECE 517 Fall 2010 Lec. 2
18
Debugging »
Method Breakpoints
To set method breakpoint:
Select method in the Outline View
From context menu select Toggle Method
Breakpoint
To set breakpoint’s properties:
Select breakpoint in editor. From the context
menu, select Breakpoint Properties.
In the Properties dialog, Check Enabled to
enable the breakpoint
Check Hit Count to enable hit count.
Breakpoint suspends execution of a thread
the nth time it is hit, but never again, until it
is re-enabled or the hit count is changed or
disabled.
Choose Enable condition to have breakpoint
enabled only if the specified condition
occurs.
condition is 'true' option: Breakpoint stops if
the condition evaluates to true. The expression provided must be a boolean expression.
value of condition changes option:
Breakpoint stops if result of the condition
changes.
CSC/ECE 517 Fall 2010 Lec. 2
19
Debugging »
Also known as watchpoint
To set the watchpoint:
Select field in the Outline View
From context menu select Toggle
Watchpoint
To set watchpoint’s properties:
Select breakpoint in editor
Select Breakpoint Properties.. from
context menu
Set properties as desired
Field Breakpoints
Access/modification, enable
Execution suspended on
access/modification of field
CSC/ECE 517 Fall 2010 Lec. 2
20
Debugging »
Java Exception Breakpoint
To Add Java Exception
Point:
Select Run » Add Java
Exception Breakpoint
from main menu
Enter exception type
Specify what triggers a
breakpoint:
Caught exception
Uncaught exception
Both
CSC/ECE 517 Fall 2010 Lec. 2
21
Debugging »
How To Debug
Here are simple steps for debugging in
Eclipse:
Set your breakpoints
Hit a breakpoint during execution
Walk/step through code to other breakpoints
Follow along in editor
Inspect/Display interesting fields
Watch the Console for things to happen
CSC/ECE 517 Fall 2010 Lec. 2
22
Debugging »
Summary
You have learned:
The views in the Debug Perspective
Typical debug session
How to use the Inspector
About the different types of breakpoints
How to set breakpoints
How step around your code doing debugging
CSC/ECE 517 Fall 2010 Lec. 2
23
Debugging »
Exercise 1
Set a breakpoint in the firstMethod method of the
class Debug class (you can paste it from the lecture
notes).
Start a debug session.
What happens to the program execution?
What do you see in the debug windows?
CSC/ECE 517 Fall 2010 Lec. 2
24
Module Road Map
1.
2.
Overview
Installing and Running
3.
4.
5.
Building and Running Java Classes
Debugging
Testing with JUnit
What is JUnit?
Where Does it Come From?
Working with Test Cases
Working with Test Suites
JUnit Window
Refactoring
Version Control with CVS
6.
7.
CSC/ECE 517 Fall 2010 Lec. 2
25
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
CSC/ECE 517 Fall 2010 Lec. 2
26
Testing »
JUnit’s web site: http://junit.org/index.htm
Eclipse includes JUnit
Where Does JUnit Come From?
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.
You can run your unit tests outside of Eclipse
If you wish using TestRunner
Using JUnit’s Window
CSC/ECE 517 Fall 2010 Lec. 2
27
Testing »
Including JUnit in a Project
In the Package window, rightclick on the name of the project
Choose “Properties”; then select
“Java Build Path”
Click on the “Libraries” tab, and
then choose the “Add Library”
button on the right.
Select “Junit” and click “Finish”.
CSC/ECE 517 Fall 2010 Lec. 2
28
Testing »
Eclipse JUnit Setup
Eclipse preferences can be set
in the JUnit Preferences window
(Window » Preferences from the
main menu. Expand Java in the
Preferences window)
For the most part you can leave
the preferences alone
Filters needed to identify
packages, classes, or patterns
that should not be shown in the
stack trace of a test failure
CSC/ECE 517 Fall 2010 Lec. 2
29
Testing »
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
Clean-up after test case is done by overriding
tearDown method
The Test framework will invoke the setUp and
tearDown methods.
CSC/ECE 517 Fall 2010 Lec. 2
30
Testing »
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
CSC/ECE 517 Fall 2010 Lec. 2
31
Testing »
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
CSC/ECE 517 Fall 2010 Lec. 2
32
Testing »
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();
}
}
CSC/ECE 517 Fall 2010 Lec. 2
33
Testing » Adding
Any method in a TestCase class is
considered a test if it begins with the word
“test”.
Tests to Test Cases
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
CSC/ECE 517 Fall 2010 Lec. 2
34
Testing »
JUnit Assert Methods
Assert methods include:
assertEqual(x,y)
assertFalse(boolean)
assertTrue(boolean)
assertNull(object)
assertNotNull(object)
assetSame(firstObject, secondObject)
assertNotSame(firstObject, secondObject)
CSC/ECE 517 Fall 2010 Lec. 2
35
Testing » 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
}
}
CSC/ECE 517 Fall 2010 Lec. 2
36
Testing »
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
CSC/ECE 517 Fall 2010 Lec. 2
37
Testing »
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
CSC/ECE 517 Fall 2010 Lec. 2
38
Testing »
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
CSC/ECE 517 Fall 2010 Lec. 2
39
Testing »
Test Suite
Runs multiple test cases
or suites
To create a TestSuite
Creating JUnit Test Suite
Select your testing
package
From the context menu
select New » Other…
Then from the Wizard
select Java » JUnit »
JUnit Test Suite
CSC/ECE 517 Fall 2010 Lec. 2
40
Testing »
Creating JUnit Test Suite
Fill in the name of your
TestSuite class
Select the TestCases
to include in your
TestSuite
CSC/ECE 517 Fall 2010 Lec. 2
41
Testing »
Unit Test Suite Template
import com.test;
import junit.framework.Test;
public class AllInclusiveTestSuite {
public static Test suite() {
TestSuite suite =
new TestSuite("Test for
com.test");
//$JUnit-BEGIN$
suite.addTestSuite(NewTestCase.class));
suite.addTestSuite(SecondTestCase.class));
//$JUnit-END$
return suite;
}
}
CSC/ECE 517 Fall 2010 Lec. 2
42
Testing »
Running JUnit Test Suite
Select TestSuite class
From the Run menu
select Run » Run As »
JUnit Test
This will run the test
cases in your TestSuite
class
You will then get a
report in the JUnit
Window
CSC/ECE 517 Fall 2010 Lec. 2
43
Testing »
JUnit Test Interface
The JUnit classes TestCase and TestSuite both
implement the JUnit Test interface
Therefore, you can add JUnit TestSuites to other
TestSuites
public static Test suite() {
TestSuite suite = new TestSuite("Test for testing");
//$JUnit-BEGIN$
suite.addTestSuite(FirstTestCase.class);
suite.addTestSuite(SecondTestCase.class);
suite.addTest(AllTests.suite());
//$JUnit-END$
return suite;
}
CSC/ECE 517 Fall 2010 Lec. 2
44
Exercise 2
Create a JUnit test case class TestClass for the package
example1 of the project Lecture 2.
Add a test method testBoolean to the class TestClass.
In the method testBoolean, invoke the assert routine
assertTrue with the argument “0” (FALSE).
Run the test case. What do you see in the JUnit window?
Now invoke the assertTrue routine with the argument “1”
(TRUE).
Run the test case. What is the output in the JUnit window?
CSC/ECE 517 Fall 2010 Lec. 2
45