23
1 1 v1.6 08/02/2006 Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging 6. Testing with JUnit 7. Version Control with CVS 5. Debugging 6. Testing with JUnit Lecture 3 2 v1.6 08/02/2006 Module Road Map 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging Debug Perspective Debug Session Breakpoint Debug Views Breakpoint Types Evaluating and Displaying Expressions 6. Testing with JUnit 7. Version Control with CVS

Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

1

1v1.6 08/02/2006

Overview of Eclipse Lectures

1. Overview

2. Installing and Running

3. Building and Running Java Classes

4. Refactoring

5. Debugging

6. Testing with JUnit

7. Version Control with CVS

5. Debugging

6. Testing with JUnitLecture 3

2v1.6 08/02/2006

Module Road Map

1. Overview2. Installing and Running

3. Building and Running Java Classes4. Refactoring5. Debugging

� Debug Perspective� Debug Session� Breakpoint� Debug Views� Breakpoint Types� Evaluating and Displaying Expressions

6. Testing with JUnit7. Version Control with CVS

Page 2: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

2

3v1.6 08/02/2006

Debugging » Debugging in Eclipse

� The Java Debugger� Part of Eclipse Java Development Tools (JDT)

� More than System.out.printn( ̎̎̎e̎rror̎̎̎̎)

� 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)

4v1.6 08/02/2006

Debugging » Debug Perspective

Threads and Monitor View

Console View

Outline View

Editor View

Tasks View

Variable View

Page 3: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

3

5v1.6 08/02/2006

Debugging » Simple Breakpoint

� 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

6v1.6 08/02/2006

Debugging » Starting a Debugging Session

� Select Java class containing the following:

� 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.

Page 4: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

4

7v1.6 08/02/2006

Debugging » Debug Session

� Execution suspends prior to the line with a breakpoint

� You can set multiple breakpoints

8v1.6 08/02/2006

Debugging » Deleting Breakpoints

� Double click on the breakpoint in the editor

Page 5: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

5

9v1.6 08/02/2006

Debugging » Control Execution From Breakpoint…

� 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� Execute next statement

� Step Return or F7� Resume execution to the end

of the method on the next line after it was invoked

10v1.6 08/02/2006

Debugging » Control Execution From Breakpoint

� Resume or F8� Continue execution

until program ends or another breakpoint is reached

� Terminate� Stops the current

execution thread

Page 6: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

6

11v1.6 08/02/2006

Debugging » Variables and Fields

� To see the values bound to fields:

� Use Variables View

� Select variable in editor

and select Inspect

� Select variable in editor

and select Display

12v1.6 08/02/2006

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();}

}

Debugging » Code Debugging in this Module

Page 7: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

7

13v1.6 08/02/2006

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

14v1.6 08/02/2006

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

Page 8: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

8

15v1.6 08/02/2006

Debugging » Display View

� Displays the result of evaluating any expression in the current context

� Opens by:

� Selecting a field in the

editor or Variables View

and choosing Display

� Clicking on the Display tab

16v1.6 08/02/2006

Debugging » Expressions View

� Remembers all objects you have inspected

� Displays the fields of the object� 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

Page 9: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

9

17v1.6 08/02/2006

Debugging » Breakpoint View

� Lists all available

breakpoints

� Can be used for

manipulating breakpoints

(through the views menu):

� Enabling

� Disabling

� Removing

� Also displays breakpoints

properties

� Accessed like other debugging views

18v1.6 08/02/2006

Debugging » Debug View

� Shows:

� 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

Page 10: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

10

19v1.6 08/02/2006

Debugging » Breakpoint Types

� Breakpoints can be set for the following Java

entities:

� Line (simple breakpoint)

� Method

� Field (watchpoint)

� Java Exception

� Each breakpoint is set a different way and

has different properties

20v1.6 08/02/2006

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.. from the context menu

� 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 booleanexpression.

� value of condition changes option: Breakpoint stops if result of the condition changes.

Page 11: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

11

21v1.6 08/02/2006

Debugging » Field Breakpoints

� 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

� Access/modification, enable

� Execution suspended on

access/modification of field

22v1.6 08/02/2006

Debugging » Java Exception Breakpoint

� To Add Java Exception Point:

� Select Run » Add Java

Exception Point from main

menu

� Enter exception type

� Specify what triggers a

breakpoint:

� Caught exception

� Uncaught exception

� Both

Page 12: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

12

23v1.6 08/02/2006

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

24v1.6 08/02/2006

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

Page 13: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

13

25v1.6 08/02/2006

Debugging » Exercise 4

� Set a breakpoint in the refactoredPrintField method of the class RefactoredClass that was refactored in

Exercise 3.

� Start a debug session.

� What happens to the program execution?

� What do you see in the debug windows?

26v1.6 08/02/2006

Module Road Map

1. Overview2. Installing and Running

3. Building and Running Java Classes

4. Refactoring5. Debugging6. Testing with JUnit

� What is JUnit?

� Where Does it Come From?

� Working with Test Cases

� Working with Test Suites

� JUnit Window

7. Version Control with CVS

Page 14: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

14

27v1.6 08/02/2006

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

28v1.6 08/02/2006

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.

� You can run your unit tests outside of Eclipse

� If you wish using TestRunner

� Using JUnit’s Window

Page 15: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

15

29v1.6 08/02/2006

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

30v1.6 08/02/2006

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.

Page 16: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

16

31v1.6 08/02/2006

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

32v1.6 08/02/2006

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

Page 17: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

17

33v1.6 08/02/2006

Testing » JUnit TestCase Templatepublic class public class public class public class NewTestCaseNewTestCaseNewTestCaseNewTestCase extends extends extends extends TestCaseTestCaseTestCaseTestCase {{{{public static void public static void public static void public static void main(Stringmain(Stringmain(Stringmain(String[] [] [] [] argsargsargsargs) {) {) {) {}}}}public public public public NewTestCase(StringNewTestCase(StringNewTestCase(StringNewTestCase(String arg0) {arg0) {arg0) {arg0) {super(arg0);super(arg0);super(arg0);super(arg0);}}}}protected void protected void protected void protected void setUpsetUpsetUpsetUp() throws Exception {() throws Exception {() throws Exception {() throws Exception {super.setUpsuper.setUpsuper.setUpsuper.setUp();();();();}}}}protected void protected void protected void protected void tearDowntearDowntearDowntearDown() throws Exception {() throws Exception {() throws Exception {() throws Exception {super.tearDownsuper.tearDownsuper.tearDownsuper.tearDown();();();();}}}}}}}}

34v1.6 08/02/2006

Testing » 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

Page 18: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

18

35v1.6 08/02/2006

Testing » JUnit Assert Methods

� Assert methods include:

� assertEqual(x,y)� assertFalse(boolean)� assertTrue(boolean)� assertNull(object)� assertNotNull(object)� assetSame(firstObject, secondObject)� assertNotSame(firstObject, secondObject)

36v1.6 08/02/2006

Testing » Adding Two Tests to JUnit Test Casepublic class public class public class public class NewTestCaseNewTestCaseNewTestCaseNewTestCase extends extends extends extends TestCaseTestCaseTestCaseTestCase {{{{public static void public static void public static void public static void main(Stringmain(Stringmain(Stringmain(String[] [] [] [] argsargsargsargs) {) {) {) {}}}}public public public public NewTestCase(StringNewTestCase(StringNewTestCase(StringNewTestCase(String arg0) {arg0) {arg0) {arg0) {super(arg0);super(arg0);super(arg0);super(arg0);}}}}protected void protected void protected void protected void setUpsetUpsetUpsetUp() throws Exception {() throws Exception {() throws Exception {() throws Exception {super.setUpsuper.setUpsuper.setUpsuper.setUp();();();();}}}}protected void protected void protected void protected void tearDowntearDowntearDowntearDown() throws Exception {() throws Exception {() throws Exception {() throws Exception {super.tearDownsuper.tearDownsuper.tearDownsuper.tearDown();();();();}}}}public void public void public void public void testCompareSucceedtestCompareSucceedtestCompareSucceedtestCompareSucceed() {() {() {() {assertEquals(0, 0); //this assertion will succeedassertEquals(0, 0); //this assertion will succeedassertEquals(0, 0); //this assertion will succeedassertEquals(0, 0); //this assertion will succeed}}}}public void public void public void public void testCompareFailtestCompareFailtestCompareFailtestCompareFail() {() {() {() {assertEquals(0, 1); //this assertion will failassertEquals(0, 1); //this assertion will failassertEquals(0, 1); //this assertion will failassertEquals(0, 1); //this assertion will fail}}}}}}}}

Page 19: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

19

37v1.6 08/02/2006

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 setUpand tearDown methods

� You will then get a report in the JUnitwindow

38v1.6 08/02/2006

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 TestCaseclick on the Hierarchy tab

Page 20: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

20

39v1.6 08/02/2006

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

40v1.6 08/02/2006

Testing » Creating JUnit Test Suite

� Test Suite

� Runs multiple test cases

or suites

� To create a TestSuite

� Select your testing

package

� From the context menu

select New » Other…

� Then from the Wizard select Java » JUnit »

JUnit Test Suite

Page 21: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

21

41v1.6 08/02/2006

Testing » Creating JUnit Test Suite

� Fill in the name of your TestSuite class

� Select the TestCasesto include in your TestSuite

42v1.6 08/02/2006

Testing » Unit Test Suite Templateimport import import import com.testcom.testcom.testcom.test;;;;import import import import junit.framework.Testjunit.framework.Testjunit.framework.Testjunit.framework.Test;;;;public class public class public class public class AllInclusiveTestSuiteAllInclusiveTestSuiteAllInclusiveTestSuiteAllInclusiveTestSuite {{{{public static Test suite() {public static Test suite() {public static Test suite() {public static Test suite() {TestSuiteTestSuiteTestSuiteTestSuite suite =suite =suite =suite =new new new new TestSuite("TestTestSuite("TestTestSuite("TestTestSuite("Test for for for for com.testcom.testcom.testcom.test");");");");//$//$//$//$JUnitJUnitJUnitJUnit----BEGIN$BEGIN$BEGIN$BEGIN$suite.addTestSuite(NewTestCase.classsuite.addTestSuite(NewTestCase.classsuite.addTestSuite(NewTestCase.classsuite.addTestSuite(NewTestCase.class));));));));suite.addTestSuite(SecondTestCase.classsuite.addTestSuite(SecondTestCase.classsuite.addTestSuite(SecondTestCase.classsuite.addTestSuite(SecondTestCase.class));));));));//$//$//$//$JUnitJUnitJUnitJUnit----END$END$END$END$return suite;return suite;return suite;return suite;}}}}}}}}

Page 22: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

22

43v1.6 08/02/2006

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 TestSuiteclass

� You will then get a report in the JUnit

Window

44v1.6 08/02/2006

Testing » JUnit Test Interface

� The JUnit classes TestCase and TestSuite both implement the JUnit Test interface

� Therefore, you can add JUnit TestSuites to other TestSuitespublic 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;}

Page 23: Overview of Eclipse Lectures - NCSU COE People · Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging

23

45v1.6 08/02/2006

Exercise 5

� Create a JUnit test case class TestClass for the package

csc517 of the project EgApp.

� 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?