web前端

位置:IT落伍者 >> web前端 >> 浏览文章

为Web应用程序创建测试用例的办法二


发布日期:2022年09月04日
 
为Web应用程序创建测试用例的办法二

另一个重要的类是 netsourceforgejwebunitTestContext它为测试创建上下文可以用这个类来处理像 cookie会话和授权之类的信息 显示了这个类的一些重要方法

  

netsourceforgejwebunitTestContext 类的重要方法

下载 jWebUnit在 Eclipse 中配置 jWebUnit

JWebUnit 是用纯 Java 代码实现的所以可以以 JAR 文件的形式获得它 (请参阅 参考资料从中获得下载链接)在完成下载之后请按以下步骤在 Eclipse 平台上配置 JWebUnit 库

把下载的文件 jwebunitzip 释放到临时目录中(假设是 C:\temp)

在 Eclipse 中创建新 Java 项目将其命名为 jWebUnit

右击 Package Explorer 视图中的 jWebUnit 项目然后选择 Properties

单击 Java Build Path单击 Libraries 标签中的 Add External JARs

浏览到 C:\temp\jwebunit\lib 目录选择这个目录中的所有 JAR 文件

单击 OK

现在可以在 Eclipse 中的 jWebUnit 项目下开发 jWebUnit 测试用例了

构建示例应用程序

现在就可以查看 jWebUnit API 的实际应用了我将带您研究一个示例应用程序帮助您更好地理解 jWebUnit 的真正威力这个应用程序是一个测试用例用于打开一个 Google 搜索页面并搜索文本 HttpUnit应用程序需要测试以下场景

打开 Google 主页

确定该页包含一个名为 q 的表单元素(在 Google 的主页上名为 q 的文本框是接受用户查询输入的文本框)应用程序用这个元素输入搜索参数

在搜索文本框中输入字符串 HttpUnit Home并提交表单

获得结果页并确定该页面包含的链接中包含文本 HttpUnit Home

单击包含文本 HttpUnit Home 的链接

现在测试场景已经就绪可以编写 Java 应用程序用 jWebUnit 实现这些需求了

第一步是声明一个从 WebTestCase 扩展而来的类如清单 所示

清单 声明测试用例类

public class GoogleTest extends WebTestCase {

static String searchLink = ;

}

正如我在前面提到过的jWebUnit 要求每个测试用例都是从 WebTestCase 中扩展而来的searchLink 保存传入的搜索参数这个值以命令行参数的形式传递给测试用例

下一步是声明入口点 —— main() 方法如清单 所示

清单 main() 方法

public static void main(String[] args) {

searchLink = args[];

junittextuiTestRunnerrun(new

TestSuite(GoogleTestclass));

}

main() 方法调用 junittextuiTestRunnerrun() 执行 JTest 测试用例因为需要运行 GoogleTest 测试用例所以作为参数传递给 run() 方法的测试套件采用 GoogleTestclass 作为参数

接下来JTest 调用 setUp() 方法来设置基本 URL 和代理如清单 所示

清单 设置

public void setUp() {

getTestContext()setBaseUrl();

getTestContext()setProxyName();

getTestContext()setProxyPort();

}

清单 把基本 URL 设置为 这意味着测试用例的启动是相对于这个 URL 的下面两个语句设置连接到 Internet 的代理主机和代理端口如果是直接连接到 Internet那么可以忽略代理设置语句

现在开始浏览站点并输入搜索参数清单 显示了访问 Web 页面然后测试所有场景的代码

清单 测试所有场景

public void testSearch() {

beginAt(/);

assertFormElementPresent(q);

setFormElement(q HttpUnit);

submit(btnG);

assertLinkPresentWithText(searchLink);

clickLinkWithText(searchLink);

}

清单 的代码连接到基本 URL并相对于 / 开始浏览然后它断定页面中包含一个名为 q 的表单元素 —— q 是 Google 主页上查询输入文本框的名称下一条语句用值 HttpUnit 设置名为 q 的文本框

再下一条语言提交表单上名为 btnG 的提交按钮(在 Google 的主页上名为 btnG 的按钮是标签为 Google Search 的按钮)表单是在这个对话中提交的下一页列出搜索结果在结果页面上代码首先检查是否有一个链接的文本是 HttpUnit Home如果该链接不存在那么测试就以 AssertionFailedError 失败如果该链接存在则测试执行的下一个操作是单击链接

运行示例应用程序

现在把示例应用程序投入使用当中

下载示例应用程序 jwebunitsamplejar

在一个目录中解压缩 jwebunitsamplejar例如如果把它释放到 C:\temp 中那么就要把源文件和类文件放在 C:\temp\com\jweb\test 中而 setclasspthbat 则放在 C:\temp 中

编辑 setclasspathbat设置 JAR_BASE 指向包含所有必需 JAR 文件的目录例如如果在 C:\temp 中释放 jwebunitzip 文件那么将 JAR_BASE 设置为 C:\temp\jwebunit\lib

打开命令行提示符切换到 C:\temp 目录

执行 setclasspathbat这会设置执行测试用例所需的 CLASSPATH

用命令 java comjwebtestGoogleTest HttpUnit Home 运行应用程序

示例输出

在执行了测试用例之后会在命令行输出一个测试用例报告如果测试失败报告看起来如清单 中所示

清单 带有断言失败的输出

C:\temp>java comjwebtestGoogleTest HttpUnit Hwee

F

Time:

There was failure:

) testSearch(comjwebtestGoogleTest)junit

frameworkAssertionFailedError: Link

with text [HttpUnit Hwee] not found in response

at netsourceforgejwebunitWebTester

assertLinkPresentWithText(WebTesterjava:)

at netsourceforgejwebunitWebTestCase

assertLinkPresentWithText(WebTestCasejava:)

at comjwebtestGoogleTesttestSearch(GoogleTestjava:)

at sunreflectNativeMethodAccessorImplinvoke(Native Method)

at sunreflectNativeMethodAccessorImplinvoke(Unknown Source)

at sunreflectDelegatingMethodAccessorImplinvoke(Unknown Source)

at comjwebtestGoogleTestmain(GoogleTestjava:)

FAILURES!!!

Tests run: Failures: Errors:

正如在清单 中可以看到的可以用 HttpUnit Hwee 作为参数来执行测试用例这个测试用例遇到断言的地方会失败因为结果页面中不包含带有这个文本的链接由此也就产生了junitframeworkAssertionFailedError

清单 执行时用 HttpUnit Home 作为参数测试用例找到一个带有这个文本的链接所以测试通过了

清单 成功测试的输出

C:\temp>java comjwebtestGoogleTest HttpUnit Home

Time:

OK ( test)

结束语

本文通过讨论 jWebUnit 框架的一些突出特性和最重要的类介绍如何用它创建简洁的测试用例让您对 jWebUnit 框架有一个认识jWebUnit 还有更多特性可以用在测试用例中它支持测试 Web 页面中的链接行数可以对字符串表或者带有指定标签的表单输入元素是否存在于页面上进行断言此外jWebUnit 还可以处理 cookie (例如断言存在某个 cookie删除 cookie 等)测试可以对某个文本之后出现的特定文本的链接进行单击 如果想为 Web 应用程序构建快而有效的测试用例jWebUnit 可能是您最好的朋友               

上一篇:有分页功能的WEB打印

下一篇:VBScript基础教程之二在HTML页面中添加VBscript代码