JBuilder 2005单位测试之JUnit框架
当前位置:以往代写 > JAVA 教程 >JBuilder 2005单位测试之JUnit框架
2019-06-14

JBuilder 2005单位测试之JUnit框架

JBuilder 2005单位测试之JUnit框架

副标题#e#

简朴的框架

JUnit是由Erich Gamma和Kent Beck开拓的开源测试框架,JBuilder集成了这个框架并对此做了扩展。JUnit之所以风行并为宽大的开拓人员所推崇,一是因为它实战性强,成果强大,二是因为它实在简朴。一个产物或框架要能有生命力,最好都具备这样的特点。

简朴地讲这个框架提供了很多断言(assert)要领,答允你配置测试的法则,如:assertEquals()、assertNull()、assertNotSame()、assertTrue()等要领,一个测试用例包罗了多个断言,当运行测试用例后,JUnit运行器会陈诉哪些断言没有通过,开拓人员就可顺藤摸瓜搞个水落石出了。而传统的测试要领需要将期望的功效用诸如System.out.println()等语句将进程信息打印到节制台或日志中,由开拓人员调查输出信息以判定是否正确,此刻这种"调查"的事情由JUnit的那些assertXxx()要领自动完成。

JUnit的测试框架类布局很简朴,主要由3个类构成,其类图干系如下图所示:

JBuilder 2005单元测试之JUnit框架

图 错误!文档中没有指定样式的文字。JUnit测试框架类布局

·junit.framework.Test:测试接口。

·junit.framework.TestCase:测试用例类,业务类的测试用例类只需要承继这个TestCase,按照环境编写若干个public void testXxx()要领,在要领中通过assertYyy()定制若干测试法则就可以了。

·junit.framework.TestSuite:测试套件类,它可以将多个测试用例类绑缚在一起运行,也可以绑缚另一个测试套件。

测试固件(Fixture)

一个测试用例可以包括若干个testXxx()测试要领,测试用例测试一个或多个类API接口的正确性,虽然在挪用类API时,需要事先建设这个类的工具及一些关联的工具,这组工具就称为测试固件(Fixture),相当于测试用例的"事情工具"。

我们在前面说过,一个测试用例类可以包括多个testXxx()要领,在运行时,每个测试要领都对应一个测试用例类的实例。虽然,你可以在详细的testXxx()要领里声明并实例化业务类的实例,在测试完成后再销毁它们。可是,这么一来你就要在每个testXxx()要领中都反复这些代码,因为TestCase实例被运行时,依照以下步调运行:

1.建设测试用例的实例。

2.挪用setUp()要领,执行一些初始化事情。

3.运行testXxx()测试要领。

4.挪用tearDown()要领,执行销毁工具的事情。

假如测试用例类中有多个testXxx()要领,且它们都需要利用到沟通的一组工具,我们可以在setUp()中实例化这组工具,并在tearDown()中销毁它们。要编写测试固件,依照以下步调举办:

1.建设TestCase类的子类。

2.在子类中声明若干个测试所用的工具。

3.包围setUp()要领,在要领中实例化这些工具。

4.包围tearDown()要领,释放这些工具的资源。

如下面等于一个简朴的测试固件:

代码清单 错误!文档中没有指定样式的文字。测试固件

1. public class MoneyTest extends TestCase
2. {
3.  private Money f12CHF;//12瑞士法郎
4.  private Money f14CHF; //14瑞士法郎
5.  private Money f28USD; //28美国美元
6.  protected void setUp() {
7.   f12CHF= new Money(12, "CHF");
8.   f14CHF= new Money(14, "CHF");
9.   f28USD= new Money(28, "USD");
10.  }
11.  protected void tearDown(){}
12. }

第3~5行声明白3个Money类工具(测试固件),在setUp()要领中实例化这3个工具(第7~9行),由于这些工具可以被垃圾举办直接接纳,所以在tearDown()中不做任何操纵。


#p#副标题#e#

测试用例(TestCase)

有了测试固件,就可以开始编写测试用例的测试要领了。虽然你也可不需要测试固件而直接编写测试用例要领。下面我们在测试固件的基本上添加测试用例要领testMoneyBag(),代码如下所示:

代码清单 错误!文档中没有指定样式的文字。测试用例要领

1. public class MoneyTest extends TestCase
2. {
3.  private Money f12CHF;//12瑞士法郎
4.  private Money f14CHF; //14瑞士法郎
5.  private Money f28USD; //28美国美元
6.  protected void setUp() {
7.   f12CHF= new Money(12, "CHF");
8.   f14CHF= new Money(14, "CHF");
9.   f28USD= new Money(28, "USD");
10. }
11.  public void testMoneyBag()
12.  { 
13.   Money bag[]= { f26CHF, f28USD };
14.   MoneyBag expected= new MoneyBag(bag);
15.   assertEquals(expected, f12CHF.add(f28USD.add(f14CHF)));
16.  }
17.  protected void tearDown(){}
18. }

#p#分页标题#e#

测试要领都必需以test为前缀,且必需是public void的,运行器以此为反射查找法则找到这些测试用例要领。在一个要领中可以包罗多个assertYyy()要领,每个assertYyy()要领都是一个测试法则。像第15行的assertYyy()断言要领即为测试Money的add()要领和MoneyBag类正确性的测试法则。

你可以在MoneyTest中添加多个public void testXxx()要领,运行器为每个要领生成一个测试用例实例,别离运行。

测试套件(TestSuite)

假如每次只能运行一个测试用例,那么又陷入了我们前面所谈到的传统测试的困境:手工去运行一个个测试用例,测试套件专门为办理这一问题而来。它通过TestSuite工具将多个测试用例组装成到一个测试套件,则测试套件批量运行。需要非凡指出的是,可以把一个测试套件整个添加到另一个测试套件中,就象小筐装进大筐里酿成一个箧一样。

测试套件类也通过承继TestCase类实现,只不外它提供了一个public static Test suite()静态要领,在该要领中将多个测试用例绑缚组装在一起。一个典范的测试套件代码如下所示:

代码清单 错误!文档中没有指定样式的文字。测试套件

1. public class MoneyTestSuite extends TestCase
2. {
3.  public TestSuite1(String s)
4.  {
5.   super(s);
6.  }
7.  public static Test suite()
8.  {
9.   TestSuite suite = new TestSuite();
10.  suite.addTestSuite(MoneyTest.class);
11.   suite.addTestSuite(MoneyBag.class);
12.   return suite;
13.  }
14. }

在第9行中声明并实例化了一个TestSuite,在第10、11行别离插手一个测试用例。你可以通过suite.addTest(Test t)要领添加一个套件。这样运行这个套件就可以自动运行所有测试用例的测试要领了。

测试运行器

JUnit提供了3个尺度的测试运行器运行这些测试用例或测试套件,这3个测试运行器别离是:

·junit.textui.TestRunner:文本测试运行器。

·junit.awtui.TestRunner:利用AWT组件界面的测试运行器。

·junit.swingui.TestRunner:利用Swing组件界面的测试运行器。

下面是基于AWT组件的测试运行器,如下图所示:

JBuilder 2005单元测试之JUnit框架

图 错误!文档中没有指定样式的文字。AWT测试运行器

·Test class name:指定测试用例类和测试套件类。

·一个进度条:暗示运行测试的执行进度,进度条下是正确、错误、失败的测试统计数。

·Error and Failures:列出了测试错误和失败的列表,点选个中的一个选项时,JUnit在窗口底部列堕落误跟踪迹。

提示:

JBuilder提供了利便的运行测试用例和测试套件类的要领,你只须点击鼠标右键就可直接挪用了。另外,JBuilder提供了一个JBTestRunner测试运行器,在成果和易用性上非JUnit提供的测试运行器所能媲美。JBuilder支持JUnit所提供的两个测试运行器:junit.textui.TestRunner和junit.swingui.TestRunner。

    关键字:

在线提交作业