您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
不仅仅只有JUnit
作者:网络转载 发布时间:[ 2013/3/25 15:00:32 ] 推荐标签:

二、IValidator
        当初看到这个开源的测试框架时,不由又喜又悔。喜的是:IValidator居然跟我写的TAF(Testing Automation Framework)有几分相象,真是英雄所见略同啊,而且它的版本已经是2.1了,看来这一套还是可行的;悔的是:为何当初没发现,也省的我摸黑,没有一个参考。
        好了,卖足了关子,给大家介绍一下这IValidator的样子。
IValidator的功能特性有:
1、测试用例是基于XML的。
2、适用于复合测试的场景。
3、集成Eclipse的开发环境。

IValidator使用XML来描述测试用例,如:下面是一个例子:
<?xml version="1.0" encoding="UTF-8"?>
<descriptor-repository xmlns="http://www.ivalidator.org/schemas/xml-repository">
<test name="Sleeping Suite">
<setups>
<setup alias="sleep"/>
</setups>
<flow>
<test alias="sleep"/>
<test alias="sleep"/>
<test alias="sleep"/>
</flow>
<checkups>
<checkup alias="sleep"/>
</checkups>
<teardowns>
<teardown alias="sleep"/>
</teardowns>
</test>

<unitlib>
<unit name="sleep">
<description>
Sleeps for the provided count of seconds.
</description>
<parameters>
<parameter name="seconds" value="5"/>
</parameters>
<instance class="org.ivalidator.sample.base.SleepTest" method="sleep"/>
</unit>
</unitlib>
</descriptor-repository>

        如果你仔细看的话,你其实已经明白每个xml节点里的含义了--每个节点会调用某些Java类的方法来完成一些功能,把这些功能串其来能完成一个完整的测试用例了。注意alias的值是在unitlib节点下定义的,以下是代码SleepTest 类。
public class SleepTest implements Unit
{
private UnitContext context;
/**
* @inheritDoc
*/
public void setContext(UnitContext _context)
{
this.context = _context;
}

/**
* Sleeps for <code>seconds</code> milliseconds. If <code>seconds</code>
* is not provided, 1 second is the default.
*/
public void sleep()
{
Parameter paramSeconds = this.context.getParameter("seconds");
int seconds = paramSeconds != null ? paramSeconds.asInt() : 1;

try
{
for(int i = seconds; i > 0; i--)
{
this.context.getLogger().info("Seconds to go: " + i);
Thread.sleep(1000);
}
}
catch(InterruptedException e)
{
return;
}
}

}

        也是说,你只要实现Unit接口,IValidator框架会将xml中的数据传入UnitContext 中(通过setContext方法),IValidator框架会在当前测试用例的整个生命周期中维护UnitContext,
        而测试代码也可以将测试过程中的中间数据放回到UnitContext中,也是说,测试代码于测试框架之间交互是通过UnitContext来完成的。

        客观来将IValidator是JUnit的一种补充,但不能取代JUnit。
        好处不说了,留给读者去体会吧,个人认为的缺点有:
1、框架本身不提供断言功能,仅仅提供测试步骤的调度和维护测试代码的上下 文,所有的实现都是在实现类里面,虽然可以通过修改输入参数来改变测试输入条 件,但显然仍过于苍白。
2、报告不够全面,从报告中仍不能
3、减轻开发人员的多少工作量有限。

        不过,我觉得,开发人员借助IValidator,可以将测试代码写的灵活一些,测试数据不要写死在代码里面,这样,测试人员可以修改测试数据来校验代码的质量,这在不少的场景下很有意义。

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd