JAVA工具实验
内容
在开发JAVA应用的时候,一个功能强大的环境可以显著减少开发时间。WebSphere Studio Application Developer包含很多提高工作效率的功能。本实验和覆盖很多WSAD的JAVA工具。
用户必要条件
WSAD4.0已安装。有Java编程经验。理解Java技术。
您将会做到的
在课程的最后,您将可以在WSAD中创建,编辑,Building,调试Java代码。
介绍
本次实验使用Junit代码,一个开放代码的Java单体测试框架。Junit的源代码已经包含在WSAD的Plugin目录中。所以,只要把代码Import进来就可以了。我们会在它之上作很多在实际开发中有用的实验。
实验说明
第一部分:创建一个Java项目
__1.在菜单上,选File -> New -> Project....
__2.在左边,选Java,右边是Java Project。然后选 Next。
__3.Project Name填上Junit,选Finish。注意,一个新的Java视图打开了。有新的Java项目和包。注意新的菜单选项和工具条上的“概要文件”按钮。随着不同的视图选中,按钮和菜单也会随之变化。
__4.在包(Packages)视图中,确认Junit项目已选中,在菜单上选 FileàImport(导入)。
__5.选Zip文件,然后Next。
__6.点Browse按钮,然后选择<install dir>/plugins/org.eclipse.jdt.ui.examples.projects/archive/junit/junit37src.jar.
__7.在导入窗口下,单击Select All 按钮。您可以在左边展开Junit,在右边查看各个资源。注意:所有的资源都必须选上。你需要所有资源。
__8.确认Junit项目显示在选择导入资源的目标( “Select the destination for imported resources”)栏位。然后选 Finish,在导入时,注意资源会先编译。这是因为在工作台选项中,资源修改时执行自动构建“Perform build automatically on resource modification”被选中(窗口à首选项)。
第二部分:在工作台中查看包
在包视图,展开Junit包,查看包的结构。每个包都包含各自的JAVA文件。注意文件在包里是如何组织的。
第三部分:编辑Java元素
__1.在包视图,找到junit.samples.VectorTest.java,双击打开。
__2. 在编辑器中,注意各个高亮的句法。
. Regular comments
. Javadoc comments
. 关键字和内建类型
. 字符串
__3.在轮廓(Outline)视图,注意怎么显示一个包的组织轮廓,声明,字段,类,方法。注意“轮廓”表明了Java元素是否abstract, final,等等。
__4.试验轮廓(Outline)上的Show/Hide Non-Public Members, and Show/Hide Static Members按钮,查看显示的变化。
__5.试验Sort(排序)按钮,使Java元素以定义顺序和字母排序。
__6.您可以查看全部的源代码,或只是一个元素的代码。选中VectorTest.java的代码页,点Show Source of Selected Element Only 按钮,在轮廓(Outline)里选不同的元素,只有选中的元素的代码显示了。
. __7.选中编辑器,然后再单击一下相同的按钮。(显示完整的源)
__8.再轮廓内,选几个元素,注意他们都显示了。现在,轮廓选择的变化使编辑器的视野变化。
__9.存盘,关闭VectorTest文件。
第四部分:书签视图
__1.在Java透视图,包视图页,展开Junit项目。
__2.打开junit.extensions 的ActiveTestSuite.java。
__3.选Perspective (透视图)-> Show View (显示视图)-> Other(其他),选书签(Bookmarks)。
书签视图打开了。
__4.在ActiveTestSuite文件,然public void runTest高亮显示。
__5.选Edit -> Add bookmark.
__6.添加书签对话框打开了。书签名栏位中public void runTest作为默认的名字显示。选OK。在书签视图中,新建了一个书签。在代码的左边,也可看到书签图标。
__7.在书签视图,双击书签,或选择书签然后单击“转至文件”(Go To),编辑器回到原来的选择。
__8.右键菜单和工具条上的删除按钮,可以删除书签。
__9.关闭书签视图。
__10.关闭ActiveTestSuite文件。
第五部分:使用代码助手
可选-需要将键入
__1.在包视图,打开junit.samples.VectorTest.java。
__2.确认轮廓里的排序按钮是“不排序”。
__3.在编辑器,VectorTest.java的最后(最后的”}”前),加入:
public void testSizeIsThree () {
__4.注意在您键入方法名字的一瞬间,新的方法出现在了轮廓内的最下面。(定义顺序)
__5.点Save按钮。因为工作台是自动编译的,所以在包视图,任务视图,都出现了错误。
__6.继续加入代码:
assertTrue(fFull.size() == 3); }
__7.点SAVE。注意错误的显示。
第六部分:用本地历史替换一个方法。
可选-需要键入
__1.在轮廓,选择testSizeIsThree(),删除。
__2.在编辑器中在最后加上新的testSizeIsThree()方法:
public void testSizeIsThree() {
fFull.add(0, new Integer(0));
fFull.remove(new Integer(3));
assertTrue(fFull.size() == 3);
}
__3.Save.
__4.在轮廓内,选择testSizeIsThree()右击,选从本地历史替换Replace from Local History.
__5.在 从本地历史替换Java元素对话框内,显示着每一次存盘时的状态。在“Java源比较”里显示了历史版本的不同之处。
__6.在本地历史栏,选择您所需地版本,然后选“替换”。编辑器中的代码替换成了历史版本。
__7.单击Save。
第七部分:使用内容助手
可选-需要键入
__2.在轮廓视图,选择testSizeIsThree()方法,定位到此方法的代码。
__3.在编辑器内,在这个方法最后加上代码:
Vector v = new Vector();
for (int i=0; i<3; i++) v.addElement(new Object());
assert
__4.当光标停在词assert的末尾时,按Ctrl+Space激活代码助手。
__5.向下滚动列表以看一下可用的选择。让代码助手窗口仍旧保持活动,在assert后面(中间没有空格)
按下字母t来缩小列表范围。
__6.选择然后停留在不同的项目上来查看每个项目可用的Javadoc帮助。
你必须首先选择项目以查看帮助。
__7.从列表中选择assertTrue(Boolean)项并按下Enter。
__8.在插入代码后,完成该行如下:
assertTrue(v.size() == fFull.size());
__9.当你做完后,Save且Close文件。
© Copyright IBM Corporation 2001, 2002. All rights reserved.
2002/01/23 11:51:40 IBM WebSphere Studio Application Developer - Lab Exercise APPDEVL8.lwp
Page 11 of 45
第八部分:使用Smart Import助手
可选
__1.如果还没有打开,双击junit.samples.VectorTest.java以在编辑器中打开它。
__2.在Outline视图中,选择import declarations,右击,选择Delete。
__3.在编辑器中,右击,选择Organize Imports。需要的import语句被加在代码开始之处包声明的下面。
Note:你可以在preferences页中控制import语句的顺序(Window ->
Preferences -> Java -> Organize Imports)。
__4.当你做完时Save这个文件。
第九部分:Extract Method
可选
在这部分里,你将改善junit.framework.TestSuite构造函数的代码。为了使代码的意图更明确,
你将抽出从基类收集的test cases代码到一个新的方法collectTestMethods。
__1.在文件junit.framework.TestSuite.java中,选择下面这段代码(大约在文件中下面第三行。):
Class superClass= theClass;
Vector names= new Vector();
while (Test.class.isAssignableFrom(superClass)) {
Method[] methods= superClass.getDeclaredMethods();
for (int i= 0; i < methods.length; i++) {
addTestMethod(methods[i], names, constructor);
}
superClass= superClass.getSuperclass();
}
__2.在编辑器中,右击,然后选择Extract Method。
__3.在Method Name域中,键入collectInheritedTests,然后点击Next。
__4.Refactoring预览页显示了所做的变化。一旦你对所做的变化感到满意,单击Finish。
__5.这个方法被抽出。在Outline view中选择它以在编辑器中导航到这个方法。
第十部分:使用Open on Selection & Open on Type Hierarchy
__1.在Packages视图中,打开junit.samples.money.MoneyTest.java到一个编辑器视图。
在编辑器里的MoneyTest类定义的第一行,选择基类TestCase。
__2.从菜单条中选取Edit -> Open on Selection。 Note:这个命令也适用于方法和字段。
__3.基类TestCase被打开在编辑器中并且出现在Outline视图中。
__4.点击编辑页TestCase.java使之活动。在类的声明中选中类名(TestCase)。
__5.从菜单条中选取Edit -> Open Type Hierarchy
__6.Hierarchy视图打开并且显示TestCase类。你也可以通过Hierarchy视图里的类型和方法打开编辑器。
第十一部分:查看类层次
__1.在Packages视图中,找到junit.framework.TestCase.java,右击,选择Open
Type Hierarchy (或从菜单条选取 Edit -> Open Type Hierarchy)。
__2.在Types视图中,如果还没有被选择,点击工具条按钮Show the Type Hierarchy来
看类层次,包括基类和继承类。
__3.在Types视图中,点击工具条按钮Show the Supertype Hierarchy来看显示类型的父元素包括
实现接口的层次(比如,沿类层次向上的结果)。注意在这“上下“显示图中,你现在可以看到TestCase
实现了接口Test。
__4.点击视图工具条里的Show the Subtype Hierarchy按钮。
__5.点击Hierarchy视图中列表pane(底部pane)中的Lock View and Show Members in Hierarchy按钮,
然后选择方法pane中的runTest()方法。注意现在视图显示所有的实现runTest()的类型。
© Copyright IBM Corporation 2001, 2002. All rights reserved.
2002/01/23 11:51:40 IBM WebSphere Studio Application Developer - Lab Exercise APPDEVL8.lwp
Page 18 of 45
__6.在Filtered Subtypes视图中,点击Show the Supertype Hierarchy按钮。然后在列表pane中,
选择countTestCases()来显示这个被重载的方法。
__7.在Hierarchy视图中,选择Test元素,右击,再选择Open Type Hierarchy。包含选中元素的
资源出现在Hierarchy视图中并且在一个活动的编辑器中被打开。
© Copyright IBM Corporation 2001, 2002. All rights reserved.
2002/01/23 11:51:40 IBM WebSphere Studio Application Developer - Lab Exercise APPDEVL8.lwp
Page 19 of 45
__8.从菜单条中选取Window -> Preferences -> Java。
__9.在Open a new type hierarchy inside区域,点击Hierarchy Perspective。然后点击OK。
__10.在Supertypes视图中,再选择Test元素,然后再一次右击Open Type Hierarchy。
包含所选类型的资源显示在新的场景里(层次场景),而它的源代码显示在Java编辑器中。
如果preference设置了viewing new type hierarchies这一选项,你可以在你的工作台中拥有
多个类型层次并且可按需要在它们之间切换。Note:你也可以通过在the Window -> Preferences
-> Workbench页中设定的在新窗口中打开场景的热键来实现。
第十二部分:编译代码
__1.切换到Java透视图,通过观察错误列表的地方检验当前在工作台中没有错误。
__2.如果它没有被打开,那么在Packages视图中,双击junit.framework.TestCase.java在一个编辑器中打开它。
__3.在文件第一行的末尾,通过删除分号来增加一个语法错误。
__4.做好这些之后在工具栏中单击Save按钮。项目被追加的构造了,并且问题被发现了。注:只有修改过的文件和与之相依赖的文件被重新编译。
__5.问题被如下显示:
. 在Tasks视图中,错误被列了出来。
. 在Packages视图中,错误的记号显示在Java要素及他们的父要素上。
. 在编辑器中,一个错误标志显示在受影响行的旁边。
__6.鼠标停在编辑器的标志栏的标志上显示弹出的帮助信息。
__7.单击编辑器上的Close按钮关闭编辑器。(名称旁边的“X”)
__8.在任务栏中选择列表中的问题,右键单击,选择Go To,被发现问题的文件的有问题的部分打开在编辑器区域。
__9.重新打上分号修正错误,点击工具栏上的Save按钮,保存的时候工程自动重建,工作台上的所有的错误指示消失了。
Part Thirteen: Renaming Java Elements
Optional
第13部分:重命名Java要素
步骤
__1.在Packages视图,选择junit.framework.TestCase.java.
__2.右击,选择Rename
__3.重命名是一个重定义操作,重定义支持改变代码的结构而不改变它的语法行为。在重命名的对话框的Enter new name中输入MyTestCase.java,单击Next。
__4.如果你真的选择重命名这个资源,工作台会分析要做的改变并且提供出能够作为替代的一个预览。重命名一个编译过的个体会使其他编译过的个体的输入声明无效,所以,在这种情况下一个单纯的重命名操作是不够的,而且有可能导致编译错误。
__5.Refactoring预览对话框中,必要的话你可以滚动察看各种预置的变化,选择或取消变更。注:典型的,你可以接受所有的预置变更。
__6.点击Finish接受所有被提议的变更。
__7.在Packages视图中,选择刚被重命名的junit.framework.MyTestCase.java文件,右击,选择Refactor -> Undo Rename “TestCase.java” to“MyTestCase.java”
__8.重定义的变更被取消了,并且工作台返回到它的原先状态。你可以取消重定义的操作,直到你改变并且保存了一个编译过的个体,也就是重定义取消的堆栈被清除的时刻。
第十四部分:生成Java类
步骤
__1.在Packages视图中,选择Junit项目,右击,选择New -> Package。
__2.在Package区域,输入test作为新的包的名字,单击Finish。
__3.在Packages视图中,选择新的test包单击Create a Java Class按钮。
__4.确定/Junit出现在文件夹的区域并且test出现在包的区域,在Name栏中输入MyTestCase。
__5.单击Superclass边上的Browse按钮。
__6.在超类选择对话框中,在Choose a type一栏输入Test为新类缩小可用的超类的范围。
__7.选择TestCase类,单击OK。
__8.选中Constructors from superclass复选框。
__9.单击Finish生成一个新的类。
第十五部分:移动和复制Java要素
步骤
__1.在Packages视图中,选中MyTestCase.java文件,拖动到junit.framework包中。类被移动了,它的声明也改变了来反映新的位置。
__2.选中MyTestCase.java文件并拖动到Junit项目的根目录。一个默认的包生成了包含这个类,包的声明也改变了来反映它的新的位置。
__3.选中MyTestCase.java文件,选择Move,在移动对话框中,扩展层次来浏览这个资源可能的新的位置。
__4.使用右击来选择移动选项只是一个简单的在拖动和放置中切换的一种方式。选中junit.framework包,单击OK,类被移动了,并且包的声明改变了来反映新的位置。注:这个例子不会导致编译错误,但是,因为当一个编译好的个体被移动时导入声明没有被更新,所以移动一个编译好的个体会导致编译错误。
第十六部分:搜索-Java模式
步骤
__1.在Java视图中,点击工作窗口工具栏上的Search按钮。
__2.选择Java Search标签(如果它没有被选中的情况)
__3.在Search Expression栏中输入runTest,在Search For区域中选择Method,在Limit To区域中选择References。
__4.单击Search。注意到在检索进程的对话框中,你可以点击Cancel在检索进行的任何时候来终止检索。
__5弹出了Search视图。
在检索视图中使用Show Next Match 和 Show Previous Match来观察每一个匹配的字段。如果被找到的操作的文件目前没有打开,那么它会打开到一个编辑器中。
注意到当你使用检索视图按钮移动到一个检索的匹配的时候,在检索操作的位置文件打开在一个编辑器中,在标志栏中用一个检索标志做记号。注意到检索结果显示着包含检索匹配字段的部分。
你可以从许多视图中操作Java的检索,比如大纲,层次或者包视图。
__6.在Packages视图中双击junit.framework.Assert.java打开编辑器。
__7.在大纲视图中,选择fail(String)方法,右击,选择Search ->References,注意到在检索进程的对话框中,你可以点击Cancel在检索进行的任何时候来终止检索。
__8.在Java透视图中,弹出了Search Results视图。
__9.使用Show Next Match 和Show Previous Match按钮来察看每个匹配的字段。如果包含匹配字段的文件没有被打开,那么它自动的打开到编辑器中。
第十七部分:检索-文本模式
步骤
__1.在Java透视图中,单击工作台工具栏上的Search按钮。
__2.选择Text Search标签。(如果它没有被选中的情况下)。
__3.在Search Expression里输入TestCase,在Extensions栏中,确认java是唯一的扩展。然后单击Search。注意到检索结果列表显示了资源中包含匹配字段的部分。
第十八部分:运行程序
__1.在Java透视图的Packages视图上,找到junit.textui.TestRunner.java,双击,在编辑器中打开它。
__2.在大纲视图上注意到TestRunner类有一个"runnable"图标。
__3.在Packages view 中,选择junit.textui包,单击工具栏的Run按钮
__4.在Run对话框中,选择Java Application,确保 Set as default launcher for project “JUnit” 选择按钮被选中
然后单击Next按钮。注意: 选项意思是在这个工程中,Java 应用平台被用做运行程序
__5.在Select Target 对话框中,选择TestRunner- junit.textui - /Junit ,然后单击Finish
__6.打开Debug perspective ,在 Console view 中TestRunner程序运行的消息 告诉你这个程序需要一个执行观点。
注意在Processes view 中,描述了Junit运行。注意: 在调试页(Window > Preferences > Debug)调试程序
你可以选择是否自动切换到 Debug 视
__7.在快捷工具栏中单击相应的视图按钮,返回到Java 视图
__8. 在Packages 视中选择junit.textui.TestRunner.java 资源、右击鼠标选择Properties.
__9.在Execution Arguments 属性页的Program Arguments域、选中 junit.samples.VectorTest 、
然后单击OK
__10.从workbench工具栏的Run按钮的下拉菜单中选择TestRunner。这个列表中包括先前运行的程序
__11.打开Debug 透视图 ,这次TestRunner 程序运行正确、指示正在运行的test的数量。注意
在Processes view 中描述了不同的Juint的运行。注意:你可以重新运行这些程序通过
从右击索引菜单选择Relaunch
__12. 在Processes view中、右击鼠标选择Remove All Terminated 去清除终止运行的视
__1. 在Java 透视图中的Packages 视中、双击junit.samples.VectorTest.java、在编辑器中打开它
__2 把指针放在标记栏中(位于编辑区域的左边)位于setUp()方法的行: : fFull.addElement (new Integer(1));上、
双击设置一个断点注意:这个断点是蓝色的、因为它未被验证,意思是包含的类还没有被java虚拟机装载
_3.在Packages 视中、选择junit.samples 包、单击工具栏的 Debug 按钮
__4. 在对话框中选择VectorTest - junit.samples - /Junit 然后单击Finish
__5. 一运行到断点,Debug 透视图就被打开,并且执行被挂起。注意在Processes 视中,进程仍然是活动的(没有终止)
其他的线程仍然可以运行。
__6.在Debug 透视图的编辑器中,选择设置断点的整行,右击选择Inspect 。在当前堆栈的上下文中,表达式被
赋值,结果被显示在Inspector 视中(在这一行中选中 “new Integer(1)”、使其高亮,右击选择Inspect。
这种情况下,这一行不能返回一个值,所以在Inspector 窗口中显示” there
is “No explicit return value””
__7.在Inspector 视中选取这个表达式,右击选择Remove。
__8.在Variables 视中显示了被选择的堆栈中变量的值
__9.在Variables 视中展开fFull树,直到你能看到elementCount
__10你可以在Debug 视中步进VectorTest 时,在Variables 视中观察这些变量(如: elementCount)。
__11.单击Step Over 按钮 跳出高亮行的代码,以同样的方法执行下一行(或者,如果你运行到方法的结束,
它将以当前的被调用的方法继续运行)?
__12. 在你结束调试时程序还没有执行完毕,在Debug 视或Process视右击suspended thread ,然后选泽Terminate
Part Twenty: Evaluating Snippets
Optional
__1. 在这一部分中,你将用Java scrapbook 获得Java表达式的值。Scrapbook用于对放入程序之前的Java代码片段
的测试。在Java 透视图中,在workbench工具栏中单击Create a Scrapbook Page 按钮。
__2. 在Enter or select the folder 域中,选取Junit(或者浏览“Enter or select the folder”的路径,选择Junit工程的根路径)
__3.在File name 域中,键入MyScrap 如果你没有键入.jpage的文件扩展名,系统会自动加上。
__4.完成后,单击Finish
__5. The scrapbook page opens in an Editor view..
__6.在编辑器中,键入System.get 然后用content assist (Ctrl+Space)去完成这片段 System.getProperties().
__7.选择你刚刚键入的一整行,选,右击鼠标 选择Display ,获得表达式的值
__8.在scrapbook 页中,表达式的结果被高亮显示。
__9.保存和关闭片断文件通过单击视的工具栏的Close 按钮 ,然后在保存对话框中选择Yes 按钮
摘要:
你精通了在 WebSphere Studio ApplicationDeveloper 中的可利用的工具。你能在工程中输入Java代码,浏览分等级组织过的代码,编辑,生成和调试代码
|
|