JBuilder 2005单位测试之建设测试用例
当前位置:以往代写 > JAVA 教程 >JBuilder 2005单位测试之建设测试用例
2019-06-14

JBuilder 2005单位测试之建设测试用例

JBuilder 2005单位测试之建设测试用例

副标题#e#

我们先为Subsection类建设测试用例。
  1.在编辑器中打开Subsection.java文件,使其处理惩罚激活态。
  2.File->New…->Test->在Test页的工具库中双击Test Case图标,启动建设测试用例的领导,如下图所示:

JBuilder 2005单元测试之建树测试用例

图 错误!文档中没有指定样式的文字。指定测试的要领

·Select class:测试的方针类,默认为当前编辑器中打开的类,也可以通过其后的…按钮选择工程中其他的类。
  ·Avaiable methods:列出了测试方针类的所有public、protected和默承认视域的要领,private要领不列出。只要你测试了前三者的要领,private也被间接测试到了。这里,我们选择getValue()和sign()要领。
  点击Next到下一步。
  3.配置测试用例类的类名。

JBuilder 2005单元测试之建树测试用例

图 错误!文档中没有指定样式的文字。指定测试用例类的名称


#p#副标题#e#

JBuilder为测试用例类指定了一个默认的类名,即Test<业务类名>,包名和业务类包名一致。接管默认的值,直接按Finish建设TestSubsection测试用例类。
  实战履历:
  固然在物理上,业务类和测试用例类被放在差异目次下,但在工程窗格的资源树中,业务类和测试用例照旧挤在了一起。假如一个包下有多个业务类,加上它们相应的测试用例类,将显得越发拥挤不堪。所以最好将测试用例放到差异的包中,如com.super.bdbj包中的所有业务类的测试用例放到test.super.bdbj目次下,这样将彻底办理测试用例和业务类的物理和逻辑上的疏散,使工程窗格中的资源树越发整洁明白。
  TestSubsection类的代码如下所示:
  代码清单 错误!文档中没有指定样式的文字。领导生成的TestSubsection类

1. package chapter25;
2.
3. import junit.framework.*;
4. public class TestSubsection extends TestCase {
5.  private Subsection subsection = null;
6.  protected void setUp() throws Exception {
7.   super.setUp();
8.   subsection = new Subsection();
9.  }
10.
11. protected void tearDown() throws Exception {
12.  subsection = null;
13.  super.tearDown();
14. }
15.
16. public void testGetValue() {
17.   int d = 0;
18.   int expectedReturn = 0;
19.   int actualReturn = subsection.getValue(d);
20.   assertEquals("return value", expectedReturn, actualReturn);
21.   /**@todo fill in the test code*/
22. }
23.
24. public void testSign() {
25.  double d = 0.0;
26.  int expectedReturn = 0;
27.  int actualReturn = subsection.sign(d);
28.  assertEquals("return value", expectedReturn, actualReturn);
29.  /**@todo fill in the test code*/
30. }
31. }

在第5行声明白一个Subsection的成员变量,并在setUp()中实例化这个变量(第7行),在tearDown()中释放这个变量(第12行),其实这三部门就组成了一个测试固件。虽然,由于我们的getValue()、sign()要领都是静态要领,所以并不需要这个固件,在测试要领中直接挪用要领就可以了,如Subsection.getValue(),但为了增强观念上的认识,我们出格予以保存。
  第16~22行的testGeValue()要领,和第24~30行的testSign(),就是在领导第1步所选择的需要测试的API要领对应的测试要领。JBuilder虽然不行能知道我们API的逻辑法则,所以它仅提供了一个框架式的测试代码,需要我们发挥智慧才智通过assertXxx()定制包围性强的测试法则。
  留意:
  你也可以手工在TestSubsection类中添加测试要领,测试要领必需遵照public void testXxx()样式类型。所以假如你想在测试用例类中添加一个帮助性的要领,请不要以test为前缀,在变动业已生成的测试要领名称时,也要担保不去除要领前的test前缀,测试运行器籍此查找测试用例类中的测试要领。
  下面,别离删除testGetValue()和testSign()要领体中的代码,用以下粗体代码替换之:
  代码清单 错误!文档中没有指定样式的文字。添加测试法则后的TestSubsection类

1. …
2. public class TestSubsection extends TestCase
3. {
4.  …
5.  public void testGetValue() {
6.   int d1 = -3,y1 = 3;
7.   int d2 = -2,y2 = 4;
8.   int d3 = 0 ,y3 = 100;
9.   int d4 = 2 ,y4 = 8;
10.  int d5 = 33 ,y5 = 32768;
11.  int d6 = 33 ,y6 = Integer.MAX_VALUE;
12.  assertEquals(y1,subsection.getValue(d1));
13.  assertEquals(y2,subsection.getValue(d2));
14.  assertEquals(y3,subsection.getValue(d3));
15.  assertEquals(y4,subsection.getValue(d4));
16.  assertEquals(y5,subsection.getValue(d5));
17.  assertEquals(y6,subsection.getValue(d6));
18. }
19.
20. public void testSign() {
21.  double d1 = -1.0, d2 = 0.0, d3 = 1.0;
22.  int y1 = 1, y2 = 0, y3 = 1;
23.  assertEquals(y1, subsection.sign(d1));
24.  assertEquals(y1, subsection.sign(d1));
25.  assertEquals(y1, subsection.sign(d1));
26.  }
27. }

#p#副标题#e#

#p#分页标题#e#

打蛇打七寸,擒贼先擒王,抓Bug还须在那些要害点上下工夫,非凡转换点是最容易呈现问题的热点地域,需要给以出格的存眷。所以我们为getValue()配置了6个测试点,而为sign()要领配置了3个测试点。
  在工程窗格资源树中找到TestSubsection.java文件,右击在弹出的菜单中选择Run Test using "TestSubsection1",JBuilder操作JBTestRunner测试运行器运行这个测试用例,在信息窗格中呈现如下的运行器界面:

JBuilder 2005单元测试之建树测试用例

图 错误!文档中没有指定样式的文字。JBTestRunner运行器界面

JBTestRunner窗口左边为3个标签页,它们的浸染在下表的说明:
  表 错误!文档中没有指定样式的文字。JBTestRunner窗口标签页说明

标签页图标 说明
JBuilder 2005单元测试之建树测试用例

假如测试没有错误,该标签页为默认显示的标签页。形成一棵测试套件->测试用例->测试要领3级的级联树。树中每个节点均有一个状态指示图标。JBuilder 2005单元测试之建树测试用例暗示通过测试,而JBuilder 2005单元测试之建树测试用例暗示未通过测试。点击未通过测试的节点,右边帧列出了错误跟踪迹,通过这个跟踪迹可以找到哪个测试法则(断言要领assertXxx())未通过。

JBuilder 2005单元测试之建树测试用例

测试错误页,假如产生了测试错误,该页被默认显示。列出所有产生错误的测试,该页是JBuilder 2005单元测试之建树测试用例标签页的子集。

JBuilder 2005单元测试之建树测试用例 该标签页中显示出所有输出到节制台的信息,如测试用例中有通过System.out.println()输出信息,则这些信息在此查察。

当没有产生失败的测试时,测试进度条显示为绿色,不然显示为赤色。对付测试用例很少的环境你看不到它的结果,假如成百上千的测试用例一起运行,这个进度条的浸染是显而易见了。进度条右边是测试功效统计信息:包罗测试要领总数和乐成数,统计信息右边是测试所耗费的时间。
  右帧是测试失败的激发点,单击链接,JBuilder自动定位到测试用例测试失败的处所,在本例里,JBuilder将定位到代码清单 错误!文档中没有指定样式的文字。添加测试法则后的TestSubsection类的代码的第17行,即:assertEquals(y5, subsection.getValue(d5));地址的行。
  说明测试失败是由这个断言引起的,由于这个断言测试入参大于32时的函数返回值正确性,所以我们就知道措施没有思量到返回值高出int范例范畴的环境。返回到代码清单 错误!文档中没有指定样式的文字。前文分段函数代码中将第13~15行被注释的代码放出来,从头运行测试,你将发明测试全部通过了。
  这也说明,编写一个有效测试用例并非易事,措施路径100%包围,完美的测试用例往往很难到达。虽然,你可以依照一些履历性的原则,个中最大的一条就是:存眷要害点。测试用例编写的能力,高出了本文的范畴,读者可以自行参考相关的书籍。
  提示:
  有时,JBTestRunner右边的帧窗口固然内容已经超出,但转动条却没有显示出来,想来应该是JBuilder一个小小的Bug吧。你可以在帧窗口中右击,在弹出的菜单中去除Word Wrap配置项,可妙手工移动一下阁下两帧间的脱离栏,转动条就会显示出来了。

    关键字:

在线提交作业