Programming Tools Eclipse JUnit Testing make and ant











































- Slides: 43

Programming Tools Eclipse JUnit Testing make and ant CS 225 1

Development Environments • Command line • gvim/emacs • javac • java • Integrated Development Environment • provides access to all the tools from a single interface • Eclipse (3. 3. 2) CS 225 2

Eclipse • "universal tool platform" • Developed by IBM • Now an open source project • http: //www. eclipse. org/downloads • Primarily a development environment for Java • written in Java • Extendible • Plug-ins can be added to support new functionality and other languages CS 225 3

Eclipse Workbench • Provides the basic graphical interface • Divided up into views • Navigator shows all projects • Editor has panes for all open files • Views are organized into perspectives • a perspective contains a set of views that are needed for a particular task • Java perspective • debug perspective CS 225 4

Command Line Arguments in Eclipse • To use command-line arguments, you need to create a Run Configuration for the project. • From the Run menu (or the Run drop-down), select Open Run Dialog • Create a new Run Configuration (or modify an existing on for the project) • Click the Arguments tab • Type the desired command-line arguments into the Program Arguments text box • Click Apply and then Run CS 225 5

IO Redirection in Eclipse • Append the redirection operators to the command-line arguments • Create a script to use as an external tool CS 225 6

JUnit Testing • JUnit is an open-source testing framework for Java • facilitates the writing of test cases • You can create test cases and test suites by extending the appropriate class from the JUnit package CS 225 7

JUnit Testing • JUnit has been integrated into Eclipse • Make sure junit. jar is on the build path • use the Properties menu • or let Eclipse find it when you create the test case • Create a test case • File -> New -> JUnit Test Case • Run your application as a JUnit Test CS 225 8

In the Test. Case class • Write methods that test each of the methods of your class • use the assertion methods on next slide for testing results of methods • You can override setup() and teardown() to create a set of objects to be shared by several tests CS 225 9

Assertion methods • assert. Equals( expected, actual) for primitives • assert. False( condition), assert. True(condition) • assert. Null( object), assert. Not. Null( object) • assert. Same( ecpected, actual), assert. Not. Same(expected, actual) CS 225 10

Sources of Information • The home page for JUnit is at http: //www. junit. org/ • The documentation is at http: //junit. sourceforge. net/javadoc/ CS 225 11

Debugging • Compile time • Compiler forces your code to have correct syntax • Run time • How do you figure out what is wrong with a program that isn't running correctly? • What information do you need? CS 225 12

Debuggers • A debugger is a tool that is designed to help you figure out what is going wrong in a program. • Useful functionality • Start the program and have it stop just before where you think the error occurs • Look at (and modify) variable values • Look at the call stack • Step through parts of the program one line at a time CS 225 13

Debugging in Eclipse • The debug perspective provides the views needed for debugging. • • • Debug view Variable View Breakpoints view Expressions view Editor view Outline and Console views are the same as in the java perspective CS 225 14

Debug View • Shows stack frames for any programs currently being debugged • Buttons allow you to • Resume - start from current instruction and continue to next breakpoint or end of program • Suspend (e. g. for infinite loop) • Terminate stops the program • Remove all terminated launches CS 225 15

Editor View • Essentially the same as in the Java perspective • Breakpoints are marked at the edge of the frame • Left click and select toggle breakpoint • An arrow marks the next statement to execute • Hovering mouse over a variable name will show its value CS 225 16

Breakpoints • A breakpoint is used to mark lines of code where you want the program to stop. • Once the program stops, you can examine all the variables • Breakpoint view shows all breakpoints and allows you to manage them • Disable, enable, remove all CS 225 17

Other kinds of Breakpoints • Watchpoints - suspend when the program is going to change an instance variable • Run-> Add/Remove Watchpoint • Method breakpoints - suspend on entry to or exit from a method • Run-> Add/Remove Method Breakpoint • Exception breakpoints - suspend on a particular Exception • Run-> Add/Remove Exception Breakpoint CS 225 18

More on Breakpoints • You can set breakpoints with hit counts • program stops when the breakpoint has been reached the specified number of times • Right-click on the breakpoint in the breakpoint view • You can also set a breakpoint to trigger • when a variable changes • when a Boolean expression is true CS 225 19

Stepping through code • Step into goes into the code of a method that is being called • Step over executes the entire method call • Step return completes the current method call • Stops at breakpoints or at the point from which the method was called CS 225 20

Values and Expressions • Double clicking on a variable in the Variable view allows you to change its value • new value is used when the program resumes • Type an expression into the Expression view to find out what its value is CS 225 21

UML Diagrams • Class diagrams • Object diagrams • Tools • dia • umbrello • violet CS 225 22

UML Class Diagrams • Used to illustrate relationships between classes • Used to show the details of a particular class CS 225 23

UML Symbols Symbol + # ~ Visibility public private protected package CS 225 Relationship Connector inheritance open (is-a) arrow association (uses) solid line aggregation/ composition (has-a) inner class open/ solid diamond circle with cross 24

Inheritance CS 225 25

Class Hierarchy CS 225 26

UML Class Diagram CS 225 27

UML Object Diagram • Used to represent the state of the program at some particular time CS 225 28

Tools for UML Diagrams • • dia umbrello violet Eclipse plug-in CS 225 29

Building Big Projects • For very large projects, the process of recompiling all the modules that make up the project can take a long time. • One way to reduce the amount of time needed to build a project is to only recompile the modules that have not changed and don't use modules that have changed. • Two tools that determine what needs to be recompiled. • make • ant (for Java) CS 225 30

The make Utility • make is a command generator designed to help you manage large projects • make allows you to specify dependencies between modules • if a class depends on another class, it should be recompiled when that class changes • make allows you to specify how to compile a particular class • make uses these specifications to determine the minimum amount of work needed to recompile a program CS 225 31

How does make Work? • make uses a file called Makefile (or makefile or GNUMakefile) to determine what needs to be recompiled. • The makefile contains a set of rules for executing the jobs it can be asked to do. • When you run make, it uses the rules in the makefile to determine what needs to be done. • make does the minimum amount of work needed to get the job done. CS 225 32

The Makefile • A make file consists of a set of rules • Each rule has the form target: dependencies commands • target is (usually) the name of a file to be created • dependencies are the names of files that are needed to create the target • commands is one or more commands that need to be executed to create the target. • Each command is indented with a tab CS 225 33

Example • Test. Priority. Queue uses KWPriority. Queue. Print. Document and Compare. Print. Documents objects • Compare. Print. Documents uses Print. Document objects • KWPriority. Queue implements Queue CS 225 34

makefile Test. Priority. Queue. class: Test. Priority. Queue. java KWPriority. Queue. class Print. Document. class Compare. Print. Documents. class javac Test. Priority. Queue. java KWPriority. Queue. class: KWPriority. Queue. java Queue. class javac KWPriority. Queue. java Queue. class: Queue. javac Queue. java CS 225 35

makefile (cont. ) Compare. Print. Documents. class: Compare. Print. Documents. java Print. Document. class javac Compare. Print. Documents. java Print. Document. class: Print. Document. javac Print. Document. java CS 225 36

Dummy targets • The makefile can also have targets that don’t create files • A target to run a java program Test. Priority. Queue: Test. Priority. Queue. class java Test. Priority. Queue • A target to remove class files clean: rm -f *. class CS 225 37

Sources of Information • Managing Projects with make by Andrew Oram and Steve Talbot • http: //www. delorie. com/gnu/docs/make/ make_toc. html • Look at the man page man make CS 225 38

Ant • make can be used with Java files • ant was designed for building large Java projects • acronym for "Another Neat Tool" • Ant uses XML format for build files CS 225 39

build files • A build file is an xml file that contains exactly one project element <? xml version="1. 0" ? > <project default="main"> </project> • main is target to build if none is given • name and basedir are optional attributes for project CS 225 40

Targets • A project element contains one or more targets • Each target corresponds to a task • the main target is required <target name="main> </target> • depends attribute contains list of targets that this target needs CS 225 41

Tasks • Each target contains one or more tasks • There a number of built-in tasks • java • needs the classname attribute to be set to the main class • javac • jar - to create a java archive • javadoc - to create the documentation CS 225 42

Sources of Information • Ant The Definitive Guide by Steve Holzner • Ant is an open source Apache project • http: //ant. apache. org/ CS 225 43