﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-happy everyday-随笔分类-eclipse</title><link>http://www.blogjava.net/smallfa/category/29719.html</link><description>上进、向上、乐观、健康、相信一切皆有可能</description><language>zh-cn</language><lastBuildDate>Fri, 13 Aug 2010 16:26:31 GMT</lastBuildDate><pubDate>Fri, 13 Aug 2010 16:26:31 GMT</pubDate><ttl>60</ttl><item><title>在 Eclipse中使用JUnit实例</title><link>http://www.blogjava.net/smallfa/archive/2010/07/20/326597.html</link><dc:creator>smallfa</dc:creator><author>smallfa</author><pubDate>Tue, 20 Jul 2010 01:40:00 GMT</pubDate><guid>http://www.blogjava.net/smallfa/archive/2010/07/20/326597.html</guid><wfw:comment>http://www.blogjava.net/smallfa/comments/326597.html</wfw:comment><comments>http://www.blogjava.net/smallfa/archive/2010/07/20/326597.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/smallfa/comments/commentRss/326597.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/smallfa/services/trackbacks/326597.html</trackback:ping><description><![CDATA[测试对于保证软件开发质量有着非常重要的作用，单元测试更是必不可少，<span style="color: black; font-family: Arial;">JUnit</span><span style="color: black; font-family: 宋体;">是一个非常强
大的单元测试包，可以对一个</span><span style="color: black; font-family: Arial;">/</span><span style="color: black; font-family: 宋体;">多个类的单个</span><span style="color: black; font-family: Arial;">/</span><span style="color: black; font-family: 宋体;">多个方法测试，还可以将不同的</span><span style="color: black; font-family: Arial;">TestCase</span><span style="color: black; font-family: 宋体;">组合成</span><span style="color: black; font-family: Arial;">TestSuit</span><span style="color: black; font-family: 宋体;">，使测试
任务自动化。</span><span style="color: black; font-family: Arial;">Eclipse</span><span style="color: black; font-family: 宋体;">同样集成了</span><span style="color: black; font-family: Arial;">JUnit</span><span style="color: black; font-family: 宋体;">，可以非常方便地编写</span><span style="color: black; font-family: Arial;">TestCase</span><span style="color: black; font-family: 宋体;">。</span><span style="color: black; font-family: Arial;"><br />
<br />
</span><font size="3"><span style="color: black; font-family: 宋体;">　　我们创
建一个</span><span style="color: black; font-family: Arial;">Java</span><span style="color: black; font-family: 宋体;">工程，添加一个</span><span style="color: black; font-family: Arial;">example.Hello</span><span style="color: black; font-family: 宋体;">类，首先我们给</span><span style="color: black; font-family: Arial;">Hello</span><span style="color: black; font-family: 宋体;">类添加一个</span><span style="color: black; font-family: Arial;">abs()</span><span style="color: black; font-family: 宋体;">方法，作用是返
回绝对值：</span></font>
<p style="margin: 0cm 0cm 12pt; line-height: 14.25pt; text-align: left;" align="left"><span style="color: black; font-family: Arial;"><img title="Image" alt="Image" src="http://www.chq.name/images/stories/softwaretesting/junit/jun071901.jpg" border="0" height="222" hspace="6" width="483" /><br />
（图一）<br />
</span><font size="3"><span style="color: black; font-family: 宋体;">　　下一
步，我们准备对这个方法进行测试，确保功能正常。选中</span><span style="color: black; font-family: Arial;">Hello.java</span><span style="color: black; font-family: 宋体;">，右
键点击，选择</span><span style="color: black; font-family: Arial;">New-&gt;JUnit
Test Case</span><span style="color: black; font-family: 宋体;">：<br />
<img title="Image" alt="Image" src="http://www.chq.name/images/stories/softwaretesting/junit/jun071902.jpg" border="0" height="384" hspace="6" width="525" /></span></font></p>
<p style="margin: 0cm 0cm 12pt; line-height: 14.25pt; text-align: left;" align="left"><span style="color: black; font-family: Arial;">（图二）<br />
</span><font size="3"><span style="color: black; font-family: 宋体;">　　</span><span style="color: black; font-family: Arial;"> Eclipse</span><span style="color: black; font-family: 宋体;">会询问是否添加</span><span style="color: black; font-family: Arial;">junit.jar</span><span style="color: black; font-family: 宋体;">包，确定后新建一个</span><span style="color: black; font-family: Arial;">HelloTest</span><span style="color: black; font-family: 宋体;">类，用来测试</span><span style="color: black; font-family: Arial;">Hello</span><span style="color: black; font-family: 宋体;">类。<br />
<img title="Image" alt="Image" src="http://www.chq.name/images/stories/softwaretesting/junit/jun071903.jpg" border="0" height="513" hspace="6" width="464" /></span></font></p>
<p style="margin: 0cm 0cm 12pt; line-height: 14.25pt; text-align: left;" align="left"><span style="color: black; font-family: Arial;">（图三）<br />
</span><font size="3"><span style="color: black; font-family: 宋体;">　　选中</span><span style="color: black; font-family: Arial;">setUp()</span><span style="color: black; font-family: 宋体;">和</span><span style="color: black; font-family: Arial;">tearDown()</span><span style="color: black; font-family: 宋体;">，然后点击</span><span style="color: black; font-family: Arial;">&#8220;Next&#8221;</span><span style="color: black; font-family: 宋体;">：<br />
<img title="Image" alt="Image" src="http://www.chq.name/images/stories/softwaretesting/junit/jun071904.jpg" border="0" height="513" hspace="6" width="464" /></span></font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 14.25pt; text-align: left;" align="left"><span style="color: black; font-family: 宋体;"><font size="3">（图
四）　　</font></span><span style="color: black; font-family: Arial;"><br />
</span><font size="3"><span style="color: black; font-family: 宋体;">　　选择要
测试的方法，我们选中</span><span style="color: black; font-family: Arial;">abs(int)</span><span style="color: black; font-family: 宋体;">方法，完成后在</span><span style="color: black; font-family: Arial;">HelloTest.java</span><span style="color: black; font-family: 宋体;">中输入：<br />
<img title="Image" alt="Image" src="http://www.chq.name/images/stories/softwaretesting/junit/jun071905.jpg" border="0" height="404" hspace="6" width="452" /></span></font><span style="color: black; font-family: Arial;"><br />
<br />
</span><span style="color: black; font-family: 宋体;"><font size="3">（图五）
</font></span><span style="color: black; font-family: Arial;"><br />
<br />
</span><font size="3"><span style="color: black; font-family: 宋体;">　　</span><span style="color: black; font-family: Arial;"> JUnit</span><span style="color: black; font-family: 宋体;">会以以下顺序执行测试：（</span><span style="color: red; font-family: 宋体;">大致的代码</span><span style="color: black; font-family: 宋体;">）</span></font></p>
<p style="margin: 0cm 0cm 0pt 3.4pt; line-height: 14.25pt; text-align: left;" align="left"><span style="font-size: 9pt; color: darkgreen; font-family: 'Courier New';">try {<br />
HelloTest test = new HelloTest(); // </span><span style="font-size: 9pt; color: darkgreen; font-family: 宋体;">建立测试类实例</span><span style="font-size: 9pt; color: darkgreen; font-family: 'Courier New';"><br />
test.setUp(); // </span><span style="font-size: 9pt; color: darkgreen; font-family: 宋体;">初始化测试环境</span><span style="font-size: 9pt; color: darkgreen; font-family: 'Courier New';"><br />
test.</span><strong><span style="font-size: 9pt; color: navy; font-family: 'Courier New';">testAbs</span></strong><span style="font-size: 9pt; color: darkgreen; font-family: 'Courier New';">();
// </span><span style="font-size: 9pt; color: darkgreen; font-family: 宋体;">测试某个方法</span><span style="font-size: 9pt; color: darkgreen; font-family: 'Courier New';"><br />
test.tearDown(); // </span><span style="font-size: 9pt; color: darkgreen; font-family: 宋体;">清理资源</span><span style="font-size: 9pt; color: darkgreen; font-family: 'Courier New';"><br />
}<br />
catch&#8230;</span></p>
<p style="margin: 0cm 0cm 12pt; line-height: 14.25pt; text-align: left;" align="left"><span style="color: black; font-family: Arial;"><br />
</span><font size="3"><span style="color: black; font-family: 宋体;">　　</span><span style="color: black; font-family: Arial;">setUp()</span><span style="color: black; font-family: 宋体;">是建立测试环境，这里创建一个</span><span style="color: black; font-family: Arial;">Hello</span><span style="color: black; font-family: 宋体;">类的实例；</span><span style="color: black; font-family: Arial;">tearDown()</span><span style="color: black; font-family: 宋体;">用于清理资源，如释放打开的文件等等。以</span><span style="color: black; font-family: Arial;">test</span><span style="color: black; font-family: 宋体;">开头的方法被认为是测试方法，</span><span style="color: black; font-family: Arial;">JUnit</span><span style="color: black; font-family: 宋体;">会依次执行</span><span style="color: black; font-family: Arial;">testXxx()</span><span style="color: black; font-family: 宋体;">方法。在</span><span style="color: black; font-family: Arial;">testAbs()</span><span style="color: black; font-family: 宋体;">方法中，我们对</span><span style="color: black; font-family: Arial;">abs()</span><span style="color: black; font-family: 宋体;">的测试分别选择
正数，负数和</span><span style="color: black; font-family: Arial;">0</span><span style="color: black; font-family: 宋体;">，如果方法返回值与期待结果相同，则</span><span style="color: black; font-family: Arial;">assertEquals</span><span style="color: black; font-family: 宋体;">不会产生异常。</span></font><span style="color: black; font-family: Arial;"><br />
<br />
</span><font size="3"><span style="color: black; font-family: 宋体;">　　如果有
多个</span><span style="color: black; font-family: Arial;">testXxx</span><span style="color: black; font-family: 宋体;">方法，</span><span style="color: black; font-family: Arial;">JUnit</span><span style="color: black; font-family: 宋体;">会创建多个</span><span style="color: black; font-family: Arial;">XxxTest</span><span style="color: black; font-family: 宋体;">实例，每次
运行一个</span><span style="color: black; font-family: Arial;">testXxx</span><span style="color: black; font-family: 宋体;">方法，</span><span style="color: black; font-family: Arial;">setUp()</span><span style="color: black; font-family: 宋体;">和</span><span style="color: black; font-family: Arial;">tearDown()</span><span style="color: black; font-family: 宋体;">会在</span><span style="color: black; font-family: Arial;">testXxx</span><span style="color: black; font-family: 宋体;">前后被调用，因此，不要在一个</span><span style="color: black; font-family: Arial;">testA()</span><span style="color: black; font-family: 宋体;">中依赖</span><span style="color: black; font-family: Arial;">testB()</span><span style="color: black; font-family: 宋体;">。</span></font><span style="color: black; font-family: Arial;"><br />
<br />
</span><font size="3"><span style="color: black; font-family: 宋体;">　　直接运
行</span><span style="color: black; font-family: Arial;">Run-&gt;Run
As-&gt;JUnit Test</span><span style="color: black; font-family: 宋体;">，就可
以看到</span><span style="color: black; font-family: Arial;">JUnit</span><span style="color: black; font-family: 宋体;">测试结果：<br />
<img title="Image" alt="Image" src="http://www.chq.name/images/stories/softwaretesting/junit/jun071906.jpg" border="0" height="309" hspace="6" width="228" /></span></font></p>
<p style="margin: 0cm 0cm 12pt; line-height: 14.25pt; text-align: left;" align="left"><span style="color: black; font-family: Arial;">（图六）<br />
</span><font size="3"><span style="color: black; font-family: 宋体;">　　绿色表
示测试通过，只要有</span><span style="color: black; font-family: Arial;">1</span><span style="color: black; font-family: 宋体;">个测试未通过，就会显示红色并列出未通过测试的方法。可以试图改变</span><span style="color: black; font-family: Arial;">abs()</span><span style="color: black; font-family: 宋体;">的代码，故意返回错误的结果（比如</span><span style="color: black; font-family: Arial;">return n+1;</span><span style="color: black; font-family: 宋体;">），然后再运行</span><span style="color: black; font-family: Arial;">JUnit</span><span style="color: black; font-family: 宋体;">就会报告错误。</span></font><span style="color: black; font-family: Arial;"><br />
<br />
</span><font size="3"><span style="color: black; font-family: 宋体;">　　如果没
有</span><span style="color: black; font-family: Arial;">JUnit</span><span style="color: black; font-family: 宋体;">面板，选择</span><span style="color: black; font-family: Arial;">Window-&gt;Show View-&gt;Other</span><span style="color: black; font-family: 宋体;">，打开</span><span style="color: black; font-family: Arial;">JUnit</span><span style="color: black; font-family: 宋体;">的</span><span style="color: black; font-family: Arial;">View</span><span style="color: black; font-family: 宋体;">：<br />
<img title="Image" alt="Image" src="http://www.chq.name/images/stories/softwaretesting/junit/jun071907.jpg" border="0" height="420" hspace="6" width="295" /></span></font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 14.25pt; text-align: left;" align="left"><span style="color: black; font-family: Arial;">（图七）<br />
</span><font size="3"><span style="color: black; font-family: 宋体;">　　</span><span style="color: black; font-family: Arial;">JUnit</span><span style="color: black; font-family: 宋体;">通过单元测试，能在开发阶段就找出许多</span><span style="color: black; font-family: Arial;">Bug</span><span style="color: black; font-family: 宋体;">，并且，多个</span><span style="color: black; font-family: Arial;">Test Case</span><span style="color: black; font-family: 宋体;">可以组合成</span><span style="color: black; font-family: Arial;">Test Suite</span><span style="color: black; font-family: 宋体;">，让
整个测试自动完成，尤其适合于</span><span style="color: black; font-family: Arial;">XP</span><span style="color: black; font-family: 宋体;">方法。每增加一个小的新功能或者对代码进行了小的修改，就立刻运行一
遍</span><span style="color: black; font-family: Arial;">Test Suite</span><span style="color: black; font-family: 宋体;">，确保新增和修改的代码不会破坏原有的功能，大大增强软件的可维护
性，避免代码逐渐</span><span style="color: black; font-family: Arial;">&#8220;</span><span style="color: black; font-family: 宋体;">腐烂</span><span style="color: black; font-family: Arial;">&#8221;</span><span style="color: black; font-family: 宋体;">。</span></font></p>
<p style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: 9pt; color: black; font-family: Arial;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></p>
<p style="background: none repeat scroll 0% 0% #eeeeee; margin: 0cm 0cm 0pt;">
</p>
<p style="background: none repeat scroll 0% 0% #eeeeee; margin: 0cm 0cm 0pt;"></p>
<span style="font-size: 11pt;"><font face="宋体">初次学会使用</font></span><span style="font-size: 11pt; font-family: Verdana;">Junit</span><span style="font-size: 11pt;"><font face="宋体">的使用是通过这篇文章的（上文</font></span><span style="font-size: 11pt;"><font face="宋体">），自己尝试跟着做了一遍，结果发现它上面提供的代码例子是错误
的，不过流程、图片都很清楚。所以你可以先看看它上面是怎么说的，至于测试的代码我稍做了改动，为的是只要说明问题就行</font></span><span style="font-size: 11pt; font-family: Verdana;">——</span><span style="font-size: 11pt;"><font face="宋体">其实不难。</font></span><span style="font-size: 11pt; font-family: Verdana;"><br />
</span><span style="font-size: 11pt;"><font face="宋体">被测试的类代码：</font></span><span style="font-size: 11pt; font-family: Verdana;"><br />
<span style="color: #0066ff;">public class HelloJunit {<br />
&nbsp;&nbsp;&nbsp; public static int abs(int n){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return n&gt;=0?n:(-n);<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
</span><span style="color: black;">Junit</span></span><span style="font-size: 11pt; color: black;"><font face="宋体">的测试代码：</font></span><span style="font-size: 11pt; color: #0066ff; font-family: Verdana;"><br />
import junit.framework.TestCase;<br />
public class HelloJunitTest extends TestCase {<br />
&nbsp;&nbsp;&nbsp; public void testAbs() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; assertEquals(HelloJunit.abs(10),10);&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; assertEquals(HelloJunit.abs(-10),10);<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
</span><span style="font-size: 11pt; color: black;"><font face="宋体">主要代码
行为</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;">assertEquals(HelloJunit.abs(10),10);</span><span style="font-size: 11pt; color: #0066ff; font-family: Verdana;">&nbsp;
<br />
</span><span style="font-size: 11pt; color: black;"><font face="宋体">其中参数
的意义为：</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;"><br />
</span><span style="font-size: 11pt; color: red; font-family: Verdana;">HelloJunit.abs(10)</span><span style="font-size: 11pt; color: black;"><font face="宋体">执行类</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;">HelloJunit</span><span style="font-size: 11pt; color: black;"><font face="宋体">的</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;">abs</span><span style="font-size: 11pt; color: black;"><font face="宋体">方法（参数为</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;">10</span><span style="font-size: 11pt; color: black;"><font face="宋体">，表示求</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;">10</span><span style="font-size: 11pt; color: black;"><font face="宋体">的绝对值）。</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;"><br />
</span><span style="font-size: 11pt; color: black;"><font face="宋体">逗号后面
的</font></span><span style="font-size: 11pt; color: red; font-family: Verdana;">10</span><span style="font-size: 11pt; color: black;"><font face="宋体">表示为预期的结果（期望值）。</font></span><span style="font-size: 11pt; color: #0066ff; font-family: Verdana;"><br />
</span><span style="font-size: 11pt; color: black;"><font face="宋体">该行表示
将期望值（</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;">10</span><span style="font-size: 11pt; color: black;"><font face="宋体">）与实际值（类</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;">HelloJunit</span><span style="font-size: 11pt; color: black;"><font face="宋体">的</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;">abs</span><span style="font-size: 11pt; color: black;"><font face="宋体">方法执行结果）进行比较，如果不相
等则抛出异常。</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;"><br />
</span><span style="font-size: 11pt; color: black;"><font face="宋体">这里只是
一个简简单单的例子，</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;">Junit</span><span style="font-size: 11pt; color: black;"><font face="宋体">被大家称为优秀的白盒自动化测试框架，当然只有自己用过了才会了解。网上有许多的资料介绍这个框架，笔
者也是从自身情况出发来学习它的。当然学习使用它是需要有一定基础的，笔者拥有</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;">C</span><span style="font-size: 11pt; color: black;"><font face="宋体">和</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;">C++</span><span style="font-size: 11pt; color: black;"><font face="宋体">的基础，对</font></span><span style="font-size: 11pt; color: black; font-family: Verdana;">Java</span><span style="font-size: 11pt; color: black;"><font face="宋体">的学习也开始不久，所以在这里将力
所能及的知识共享出来与大家分享，希望能够共同提高。另外笔者是专职的测试人员，所以在描述一些问题时大多都会以测试的角度来阐述。学习此框架的目的在于
能够在工作中进行白盒测试，在以后的介绍中还会介绍白盒测试相关的理论和工具，希望大家能够一起提高进步。</font></span>
<img src ="http://www.blogjava.net/smallfa/aggbug/326597.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/smallfa/" target="_blank">smallfa</a> 2010-07-20 09:40 <a href="http://www.blogjava.net/smallfa/archive/2010/07/20/326597.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse快捷键   </title><link>http://www.blogjava.net/smallfa/archive/2010/05/16/321119.html</link><dc:creator>smallfa</dc:creator><author>smallfa</author><pubDate>Sun, 16 May 2010 14:41:00 GMT</pubDate><guid>http://www.blogjava.net/smallfa/archive/2010/05/16/321119.html</guid><wfw:comment>http://www.blogjava.net/smallfa/comments/321119.html</wfw:comment><comments>http://www.blogjava.net/smallfa/archive/2010/05/16/321119.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/smallfa/comments/commentRss/321119.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/smallfa/services/trackbacks/321119.html</trackback:ping><description><![CDATA[<h1><span csdnid="titleStyle">生成 注释</span></h1>
应该是选取要注释内容后， ctrl+shift+c 按一下注释，按两下取消注释<br />
<br />
<pre>ctrl+shift+"反注释！能讲ctrl+shift+/ 多行注释掉的内容反注释掉<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
CTRL+T&nbsp; 查看接口的实现<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
</pre>
<h2 class="titName SG_txta" id="t_624aa0960100fkrr">MyEclipse调试</h2>
<p>1.首先在一个java文件中设断点，然后运行debug，当程序走到断点处就会停下。<br />
2.F5键与F6键均为单步调试，</p>
<p>&nbsp;<wbr> F5是step into，也就是进入本行代码中执行（进入函数执行），</p>
<p>&nbsp;<wbr> F6是step over，也就是执行本行代码，跳到下一行执行（不进入函数），<br />
3.F7是跳出函数 step return<br />
4.F8是执行到最后。</p>
<p>=====================================</p>
<p>1.Step Into (F5) 跳入<br />
2.Step Over (F6) 跳过<br />
3.Step Return (F7) 执行完当前method，然后return跳出此method<br />
4.step Filter 逐步过滤
一直执行直到遇到未经过滤的位置或断点(设置Filter:window-preferences-java-Debug-step
Filtering)<br />
5.resume 重新开始执行debug,一直运行直到遇到breakpoint<br />
6.hit count 设置执行次数 适合程序中的for循环(设置 breakpoint view-右键hit
count)<br />
7.inspect 检查 运算。执行一个表达式显示执行值<br />
8.watch 实时地监视变量的变化<br />
9.我们常说的断点(breakpoints)是指line breakpoints,除了line
breakpoints,还有其他的断点类型：field(watchpoint)breakpoint,method
breakpoint,exception breakpoint.<br />
10.field breakpoint 也叫watchpoint(监视点) 当成员变量被读取或修改时暂挂<br />
11.添加method breakpoint 进入/离开此方法时暂挂(Run-method breakpoint)<br />
12.添加Exception breakpoint 捕抓到Execption时暂挂(待续...)<br />
断点属性：<br />
1.hit count 执行多少次数后暂挂 用于循环<br />
2.enable condition 遇到符合你输入条件(为ture\改变时)就暂挂<br />
3.suspend thread 多线程时暂挂此线程<br />
4.suspend VM 暂挂虚拟机<br />
13.variables 视图里的变量可以改变变量值，在variables 视图选择变量点击右键--change
value.一次来进行快速调试。<br />
14.debug
过程中修改了某些code后--〉save&amp;build--&gt;resume--&gt;重新暂挂于断点</p>
<p><br />
===========================<br />
例如你有如下程序：<br />
public class debugtest {</p>
<ins>来源：(<a href="http://blog.sina.com.cn/s/blog_624aa0960100fkrr.html">http://blog.sina.com.cn/s/blog_624aa0960100fkrr.html</a>)
- MyEclipse调试_匆匆过客_新浪博客</ins>
<p><br />
&nbsp;<wbr>public String addDays() {<br />
&nbsp;<wbr>&nbsp;<wbr>System.out.println("1");//
=============》(3)<br />
&nbsp;<wbr>&nbsp;<wbr>String result = "";
//=============》(4)<br />
&nbsp;<wbr>&nbsp;<wbr>System.out.println("2");//
=============》(5)<br />
&nbsp;<wbr>&nbsp;<wbr>return result;<br />
&nbsp;<wbr>&nbsp;<wbr>}</p>
<p><br />
&nbsp;<wbr>public static void main(String args[]) {</p>
<p>&nbsp;<wbr>&nbsp;<wbr>debugtest aa = new
debugtest();<br />
&nbsp;<wbr>&nbsp;<wbr>int ii=9;<br />
&nbsp;<wbr>&nbsp;<wbr>aa.addDays();//
=============》(1)<br />
&nbsp;<wbr>&nbsp;<wbr>System.out.println("eeeeeeeeeeeeeee");//=============》(2)<br />
&nbsp;<wbr>&nbsp;<wbr>} &nbsp;<wbr><br />
}</p>
<p>&nbsp;<wbr></p>
<p>你在(1)处加断点，运行到此处时如果Step Into (F5)为跳入（进入函数），则接着执行到(3)。</p>
<p>再执行Step Over (F6)执行本行，则执行到(4)。</p>
<p>最后执行Step Return (also F7)，则跳出addDays方法，跳到(2)</p>
<pre>转http://blog.sina.com.cn/s/blog_624aa0960100fkrr.html</pre>
<br />
MyEclipse 中显示行号&nbsp; 要想显示行号，按住 Ctrl + F10 选择 show Line Numbers<br />
<br />
<br />
<br />
<br />
<a href="http://www.javaeye.com/topic/585168">eclipse/myeclipse注释模板的修改</a>&nbsp;&nbsp; alt+shitf+j<br />
<br />
Window --&gt; Java --&gt; Code Style --&gt; Code Templates --&gt; Comments --&gt; types --&gt; Edit
<br />
<br />
/**&nbsp;&nbsp;
<br />
*&nbsp;&nbsp;&nbsp;
<br />
* 项目名称：${project_name}&nbsp;&nbsp;
<br />
* 类名称：${type_name}&nbsp;&nbsp;
<br />
* 类描述：&nbsp;&nbsp;
<br />
* 创建人：${user}&nbsp;&nbsp;
<br />
* 创建时间：${date} ${time}&nbsp;&nbsp;
<br />
* 修改人：${user}&nbsp;&nbsp;
<br />
* 修改时间：${date} ${time}&nbsp;&nbsp;
<br />
* 修改备注：&nbsp;&nbsp;
<br />
* @version&nbsp;&nbsp;&nbsp;
<br />
*&nbsp;&nbsp;&nbsp;
<br />
*/
<br />
<br />
http://www.javaeye.com/topic/585168&nbsp;&nbsp;&nbsp; <br />
myeclipse中如何配置自定义的代码排版格式&nbsp;&nbsp;&nbsp; ctrl+shift+f&nbsp; <br />
<br />
<br />
<img src ="http://www.blogjava.net/smallfa/aggbug/321119.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/smallfa/" target="_blank">smallfa</a> 2010-05-16 22:41 <a href="http://www.blogjava.net/smallfa/archive/2010/05/16/321119.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>图解MyEclipse配置struts+hibernate+spring+FreeMarker</title><link>http://www.blogjava.net/smallfa/archive/2008/11/07/239141.html</link><dc:creator>smallfa</dc:creator><author>smallfa</author><pubDate>Thu, 06 Nov 2008 17:55:00 GMT</pubDate><guid>http://www.blogjava.net/smallfa/archive/2008/11/07/239141.html</guid><wfw:comment>http://www.blogjava.net/smallfa/comments/239141.html</wfw:comment><comments>http://www.blogjava.net/smallfa/archive/2008/11/07/239141.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/smallfa/comments/commentRss/239141.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/smallfa/services/trackbacks/239141.html</trackback:ping><description><![CDATA[　这几天把hibernate和spring好好看了下，再想想struts的一些东西，决定把3个整合一下一起用，表现层用struts+freemarker，业务层用spring，hibernate处理持久层。在struts中，利用委托，将action的处理委托给spring进行，struts只负责页面逻辑。<br />
　　前些日子下了Eclipse 3.2+MyEclipse5.0M2，感觉MyEclipse一些东西还是不错的，就用它来做个整合。<br />
　　首先，建立一个web project：<br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/01.jpg" border="0" twffan="done" /><br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/02.jpg" border="0" twffan="done" /><br />
　　然后，给新建立的项目附加上struts的一些文件：<br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/03.jpg" border="0" twffan="done" /><br />
　　<img height="491" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/04.jpg" width="557" border="0" twffan="done" /><br />
　　完成后项目结构如下：<br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/05.jpg" border="0" twffan="done" /><br />
　　接着加入hibernate需要的文件：<br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/06.jpg" border="0" twffan="done" /><br />
　　<img height="531" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/07.jpg" width="507" border="0" twffan="done" /><br />
　　<img height="533" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/08.jpg" width="508" border="0" twffan="done" /><br />
　　<img height="532" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/09.jpg" width="507" border="0" twffan="done" /><br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/10.jpg" border="0" twffan="done" /><br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/11.jpg" border="0" twffan="done" /><br />
　　完成后项目结构为：<br />
　　<img height="388" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/12.jpg" width="189" border="0" twffan="done" /><br />
　　再加入spring的文件：<br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/13.jpg" border="0" twffan="done" /><br />
　　注意下面的选择：<br />
　　<img height="538" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/14.jpg" width="508" border="0" twffan="done" /><br />
　　<img height="533" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/15.jpg" width="509" border="0" twffan="done" /><br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/16.jpg" border="0" twffan="done" /><br />
　　完成后可以看到：<br />
　　<img height="200" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/17.jpg" width="185" border="0" twffan="done" /><br />
　　打开那个applicationContext.xml，将<br />
　　<img height="50" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/18.jpg" width="361" border="0" twffan="done" /><br />
　　改为：<br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/19.jpg" border="0" twffan="done" /><br />
　　现在还需要做一些修改，才能在运行的时候不报错，我以前也写过struts+hibernate的时候，会抛一个错，之所以是由于hibernate包含的那个xerces.jar，所以现在直接把它给删掉，没什么问题。<br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/20.jpg" border="0" twffan="done" /><br />
　　在spring和hibernate那，有2个log4j.jar，老版本不好用，所以删除，换一个新版本。<br />
　　删除<img height="57" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/21.jpg" width="132" border="0" twffan="done" />和<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/22.jpg" border="0" twffan="done" />，换上<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/23.jpg" border="0" twffan="done" />，然后，在src下加入一个log4j.properties：<br />
　　<img height="104" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/24.jpg" width="193" border="0" twffan="done" /><br />
　　内容如下：<br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/25.jpg" border="0" twffan="done" /><br />
　　这样log4j就配好了。<br />
　　接下来是加入FreeMarker，jsp比不上，个人感觉。<br />
　　先下一个freemarker.jar<img height="27" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/26.jpg" width="144" border="0" twffan="done" />，加到WEB-INF下的lib目录，然后，打开web.xml，加入如下内容：<br />
　　<img height="209" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/27.jpg" width="168" border="0" twffan="done" /><br />
　　<img height="513" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/28.jpg" width="511" border="0" twffan="done" /><br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/29.jpg" border="0" twffan="done" /><br />
　　下面来点实战演习。<br />
　　切换到MyEclipse的hibernate视图。<br />
　　<img height="45" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/30.jpg" width="136" border="0" twffan="done" /><br />
　　打开数据库连接：<br />
　　<img height="182" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/31.jpg" width="217" border="0" twffan="done" /><br />
　　<img height="325" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/32.jpg" width="446" border="0" twffan="done" /><br />
　　然后，执行<br />
　　<img height="359" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/33.jpg" width="361" border="0" twffan="done" /><br />
&nbsp;　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/34.jpg" border="0" twffan="done" /><br />
　　自动生成几个文件：<br />
　　<img height="65" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/35.jpg" width="164" border="0" twffan="done" /><br />
　　并且，spring的applicationContext.xml自动加入<br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/36.jpg" border="0" twffan="done" /><br />
　　然后，建立ftl页面，根据前面web.xml配置的freemarker设置，需要建立如下目录<br />
　　<img height="70" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/37.jpg" width="157" border="0" twffan="done" />　　<br />
　　先把页面逻辑处理下，打开struts-config.xml，然后进行如下操作<br />
　　<img height="275" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/38.jpg" width="408" border="0" twffan="done" /><br />
　　<img height="627" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/39.jpg" width="531" border="0" twffan="done" /><br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/40.jpg" border="0" twffan="done" /><br />
　　继续加<br />
　　<img height="212" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/41.jpg" width="339" border="0" twffan="done" /><br />
　　<img height="402" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/42.jpg" width="511" border="0" twffan="done" /><br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/43.jpg" border="0" twffan="done" /><br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/44.jpg" border="0" twffan="done" /><br />
　　完成后效果如下：<br />
　　<img height="139" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/45.jpg" width="545" border="0" twffan="done" /><br />
　　下面是3个页面：<br />
　　<img height="120" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/46.jpg" width="148" border="0" twffan="done" /><br />
　　<img height="70" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/47.jpg" width="301" border="0" twffan="done" /><br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/48.jpg" border="0" twffan="done" /><img height="168" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/49.jpg" width="833" border="0" twffan="done" /><br />
　　这里注意下前2行，在freemarker中用struts标签。<br />
　　前面说过action委托给spring做，许要在struts那加入<br />
　　<img height="89" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/50.jpg" width="548" border="0" twffan="done" /><br />
　　然后，action类需要修改下<br />
　　<img height="452" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/51.jpg" width="567" border="0" twffan="done" /><br />
　　下面的setter是为spring准备的。<br />
　　struts配置那的action声明需要修改一下，说明用代理：<br />
　　<img height="142" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/59.jpg" width="566" border="0" twffan="done" /><br />
　　然后在spring的applicationContext.xml加上：<br />
　　<img height="106" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/52.jpg" width="474" border="0" twffan="done" /><br />
　　注意是用name，不是id。<br />
　　发布，运行，结果抛了个错<br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/53.jpg" border="0" twffan="done" /><br />
　　还好，问题不大，找到<img height="22" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/54.jpg" width="111" border="0" twffan="done" />加到WEB-INF/lib下就可以了。<br />
　　开始测试<br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/55.jpg" border="0" twffan="done" /><br />
　　成功的话：<br />
　　<img height="72" alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/56.jpg" width="278" border="0" twffan="done" /><br />
　　否则：<br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/57.jpg" border="0" twffan="done" /><br />
　　然后去数据库一看，郁闷，数据没进来，试了N久，最后发现spring里要定义个dataSource。原来sessionFactory的定义变为如下：<br />
　　<img alt="" src="http://images.cnblogs.com/cnblogs_com/zxub/58.jpg" border="0" twffan="done" /><br />
　　ok，一切正常。到这里，就写完了，只是为说明怎样用MyEclipse进行快速开发，毕竟平时做项目要的是进度，还要监管质量，有了MyEclipse，确实方便不少。<br />
http://www.cnblogs.com/zxub/archive/2006/08/03/466682.html
<img src ="http://www.blogjava.net/smallfa/aggbug/239141.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/smallfa/" target="_blank">smallfa</a> 2008-11-07 01:55 <a href="http://www.blogjava.net/smallfa/archive/2008/11/07/239141.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse 5.5 开发 Spring 整合 Struts, Hibernate 的应用</title><link>http://www.blogjava.net/smallfa/archive/2008/11/06/239119.html</link><dc:creator>smallfa</dc:creator><author>smallfa</author><pubDate>Thu, 06 Nov 2008 14:02:00 GMT</pubDate><guid>http://www.blogjava.net/smallfa/archive/2008/11/06/239119.html</guid><wfw:comment>http://www.blogjava.net/smallfa/comments/239119.html</wfw:comment><comments>http://www.blogjava.net/smallfa/archive/2008/11/06/239119.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/smallfa/comments/commentRss/239119.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/smallfa/services/trackbacks/239119.html</trackback:ping><description><![CDATA[<div class="posttitle"><a class="singleposttitle" id="viewpost1_TitleUrl" href="http://www.blogjava.net/beansoft/archive/2007/10/07/150877.html">MyEclipse 5.5 开发 Spring + Struts + Hibernate 的详解视频(长1.5小时)</a> </div>
<p>第一部分: Struts 开发 6.83MB 22分36秒 <a href="http://beansoft.java-cn.org/download/ssh_1_struts.exe">http://beansoft.java-cn.org/download/ssh_1_struts.exe</a></p>
<p>第二部分: Hibernate + Spring 11.5MB&nbsp;38分59秒 <a href="http://beansoft.java-cn.org/download/ssh_2_hibernate_spring.exe">http://beansoft.java-cn.org/download/ssh_2_hibernate_spring.exe</a></p>
<p>第三部分: 自己实现 SpringProxyAction 5.05MB 14分25秒 <a href="http://beansoft.java-cn.org/download/ssh_3_struts_proxy_asm.exe">http://beansoft.java-cn.org/download/ssh_3_struts_proxy_asm.exe</a></p>
<p>第四部分: ASM 错误解决及用 Spring 的代理实现整合 9.95MB&nbsp;23分49秒 <a href="http://beansoft.java-cn.org/download/ssh_4_spring_struts.exe">http://beansoft.java-cn.org/download/ssh_4_spring_struts.exe</a></p>
<p>大纲 PDF 下载: <a href="http://beansoft.java-cn.org/download/spring_struts_hibernate.pdf">http://beansoft.java-cn.org/download/spring_struts_hibernate.pdf</a> 427KB</p>
<p>代码下载(不带类库): <a href="http://beansoft.java-cn.org/download/myssh.rar">http://beansoft.java-cn.org/download/myssh.rar</a> 45KB</p>
<p>&nbsp;</p>
<p><strong>视频大纲:</strong> <br />
http://www.blogjava.net/beansoft/archive/2008/11/04/150877.html#238712</p>
<img src ="http://www.blogjava.net/smallfa/aggbug/239119.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/smallfa/" target="_blank">smallfa</a> 2008-11-06 22:02 <a href="http://www.blogjava.net/smallfa/archive/2008/11/06/239119.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>