对于极限编程而言,要求在编写代码之前先写测试,这样可以强制开发人员在写代码之前仔细思考代码(方法)的功能和逻辑,否则编写的代码很不稳定,那么这就需要同时维护测试代码和实际代码,这个工作量就会大大增加。因此在极限编程中,基本过程是这样的:构思-> 编写测试代码-> 编写代码-> 测试,而且编写测试和编写代码都是增量式的,写一点测一点,在编写以后的代码中如果发现问题可以较快的追踪到问题的原因,减小回归错误的纠错难度【1】。
对于重构而言,其好处和极限编程中是类似的,因为重构也是要求改一点测一点,减少回归错误造成的时间消耗【1】。
其他情况下,在开发的过程中使用JUnit写一些适当的测试是有必要的,因为一般情况下同样需要编写测试的代码,可能原来不是使用的JUnit,如果使用 JUnit,而且针对接口(方法)编写测试代码会减少以后的维护工作,例如以后对方法内部的修改(这个就是相当于重构的工作了)。另外就是因为JUnit 有断言功能,如果测试结果不通过,JUnit会显示哪个测试不通过以及不通过的原因,而如果是以前的一般做法是写一些测试代码看其输出结果,然后再由测试人员来判断结果是否正确。使用JUnit的好处就是这个结果是否正确的判断是JUnit本身来完成,测试人员只需要观察JUnit的结果是否正确就可以了,在一般情况下会大大提高效率【1】。
现在,JUnit已经发展到JUnit4,JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。Annotation一般翻译成元数据(或者称为注解),在Java里面可以用来和public、static等关键字一样来修饰类名、方法名、变量名【12】。文献综述
在JUnit4中,测试类不必再扩展junit.framework.TestCase;事实上,不必须扩展任何内容。但是,JUnit 4中使用的是注解。为了以一个测试用例方式执行,一个JUnit 4类中至少需要一个@Test注解【12】。
有很长一段时间,JUnit几乎成为事实上的单元测试框架标准。但是,近来,这个框架似乎无大"动静":没有重要的发行版本,没有引人注目的新特征出现。这可能是为什么其它测试框架,例如Test-NG开始逐渐占居测试框架市场统治地位的原因【12】。
随着这个新版本的发行,JUnit又出现了新的转机。如今,它提供了许多新的API,而且现在还使用注解,所以使开发测试用例更为容易。事实上,该JUnit开发者已经开始考虑新的未来的注解问题。以此来看,JUnit的未来依然令人憧憬【12】。
1.2 本文研究内容及意义
本文研究内容主要就是基于JUnit的自动化测试技术对Struts2构件Action的测试,本文将从以下个方面入手:
第一,介绍JUnit工作原理,了解JUnit最新技术JUnit4和测试框架,给出解决很难或者不易生成数据对象的解决方法,Mock对象。
第二,探究在Struts2Action类测试中的测试方法,分别从Struts2框架结构、Action类的概念作用和生命周期、Action类测试的重要性、Action类测试时资源需求的划分和难点以及容器外测试的意义诸多方面探究了Struts2Action类的测试方法。
第三,通过一个具体的项目TBMS,实践本文所探究的测试方法,在实际运用中总结Action类的测试。
本文研究JUnit自动化测试技术的意义在于,一个大型复杂J2EE/Web应用系统中往往包含大量的Struts构件,这些构件难以采用一般性JUnit单元测试来执行,需要部署在J2EE容器中才能运行,但部署运行测试需要较长周期,而且要依赖客户端Web浏览器,自动化测试性能低下。通过本文的研究方法之后,可以在完全不需要依赖于J2EE容器的情况下,执行测试用例,访问外部资源,可靠的给出测试结果,这对于一个项目的累积开发是极具意义的。来.自/751·论|文-网·www.751com.cn/