天天看点

CloudTest进阶开发应用

 CloudTest是一款轻量级的新一代java unit test框架。利用其便捷的复用性可轻松构建应用软件的测试用例,并可轻松部署于其他环境进行快速自动回归并通过邮件汇报测试结果。

在J2EE应用中,利用WebService可将CloudTest部署与目标环境, 通过soapUI等工具可以快速测试目标环境Web容器内的服务状况。

快速使用方法:

1.http://sourceforge.net/projects/cloudtest/下载最新版本

2.将lib下的jar放到WEB-INF/lib下

3.配置 CLOUDTEST_HOME 环境变量指向到发布包下的 CLOUDTEST_HOME 目录下

4.配置servlet:

<servlet>

        <servlet-name>CloudTestServlet</servlet-name>

        <servlet-class>com.unibeta.cloudtest.servlet.CloudTestServlet</servlet-class>

        <init-param>

            <param-name>CLOUDTEST_HOME$PathProvider</param-name>

          <param-value>com.unibeta.cloudtest.config.impl.CLOUDTEST_HOME$PathProviderImpl</param-value>

        </init-param>

        <init-param>

            <param-name>ROOT_FOLDER_NAME</param-name>

            <param-value>cloudtest</param-value>

        </init-param>

        <load-on-startup>2</load-on-startup>

    </servlet>

5.确认容器内部署了JAX-WS引擎,例如CXF或者Axis等

6.启动容器服务器,确认webserviceCloudTestServices部署成功。

7.使用Java2TestCases工具自动生成test case xml

8.调试运行xml case

TestCaseXML example 如下:

<?xml version="1.0" encoding="UTF-8"?>

<cloudTestCase assertRuleFile="DataTypeTest.assert.xml" imports="">

    <testCase assertId="DataTypeTest_testString" depends="" desc=""

        id="DataTypeTest_testString" ignore="false" returnFlag="true" returnTo="">

        <className>test.DataTypeTest</className>

        <methodName>testString</methodName>

        <parameter>

            <name>String</name>

            <dataType>java.lang.String</dataType>

            <parameterType>0</parameterType>

            <value>"lwybtexfb"</value>

        </parameter>

        <assertion>

            <timeout>-1.0</timeout>

            <assert>StringResult != null</assert>

            <message>DataTypeTest_testStringasserted failure.\nReturned result is:\n#{newcom.thoughtworks.xstream.XStream().toXML(StringResult)}\n.</message>

        </assertion>

    </testCase>

    <testCase assertId="DataTypeTest_testLong" depends="DataTypeTest_testString" desc=""

        id="DataTypeTest_testLong" ignore="false" returnFlag="true" returnTo="">

        <className>test.DataTypeTest</className>

        <methodName>testLong</methodName>

        <parameter>

            <name>long</name>

            <dataType>java.lang.Long</dataType>

           <parameterType>0</parameterType>

            <value>46L</value>

        </parameter>

        <assertion>

            <timeout>-1.0</timeout>

            <assert>LongResult != 0</assert>

            <message>DataTypeTest_testLongasserted failure.\nReturned result is:\n#{newcom.thoughtworks.xstream.XStream().toXML(LongResult)}\n.</message>

        </assertion>

    </testCase>

</cloudTestCase>

Properties explanation:

import:导入外部XML cases文件, 一般以TestCase为前缀代表位于cloudtest context目录TestCase下;

             例如 import = “TestCase/case1/MyCase.tc.xml”. 运行时会导入指定目录下的cases; 如果需要import多个,可以用逗号隔开。

depends:当前case运行所依赖的case,可以是空,一个或者多个; 依赖多个case的时候可以用逗号隔开。 

                 例如:depends = “Case1,Case2”. 运行时会一次运行Case1和Case2.

ignore:运行时是否忽略不予运行。 默认是”false”. 如果是”true”, 当前case自动运行时将会被忽略,只能被其他case 作为depends的case才能被运行.

returnTo:将当前case的运行结果赋值给returnTo指定的名字.

                  例如, returnTo = “returnResult”. returnResult在当前的执行生命周期内会一直有效并且可以被按java语法引用操作.

dataType:参数类型的全类名, 例如,”java.lang.Long”.

parameterType:  参数类型0或1.  1代表从外部xml文件创建对象实例;

                             例如:  “TestData/myData.xml”. 其他情况均为0.

value:参数值; 可以书写符合java语法的脚本或者数值, 支持动态脚本语言语法.

例如:

1L,代表long类型的1.

“bar” //代表字符串 “bar”

Foo = new String(“bar”); return Foo; //返回字符串“bar”,无需为Foo定义数据类型。

Foo = new String(“bar”); return Foo.leng();  //返回字符串“bar”的长度3

timeout: 性能监控定义,性能要求在指定时间内(单位是秒),运行时间超过后会断言为失败;

assert:运行结果断言.  支持严格java的语法。不支持动态脚本语言的语法,仅且只能支持java语法.