public static void main( String[] args ) { String[] JUnitArgs = new String[] { "-noloading", YourTestClass.class.getName() }; JUnit.swingui.TestRunner.main( JUnitArgs );}
对外部可测试组件进行单元测试
现在,让我们转而讨论如何对WebLogic Platform组件进行单元测试。在讨论中,我将指出内部可测试组件和外部可测试组件的差别,这是我要讨论的第一个话题。对于此处的讨论来说,外部可测试组件是指那些可以从J2EE容器外部(通常是通过HTTP)调用的组件。编写测试时,您的测试用例可以初始化一个到服务器的网络连接,把相应的请求发送给它,然后验证服务器的响应是否正确。
Java Page Flows(JPF)、Java Server Pages(JSP)和Servlet
测试Web站点时,您的测试本质上是模拟浏览器从服务器请求一个或一系列页面。根据所涉及的站点,您需要创建正确的HTTP请求,包括相关的URL、头、参数、cookie,等等。一旦服务器做出响应,您将需要检查响应的内容,包括头、HTML本身、客户端的JavaScript和cookie。有两种一般的方法可以完成这项工作。
使用代理
首先,您可以使用代理来记录普通web浏览器和服务器之间的交互。在仔细检查页面的正确顺序和手动验证结果的正确性之后,您可以使用上述记录自动回放同样的请求序列,并验证结果是否相同。有许多使用这种方法的包,包括MaxQ () 和QuickTest ( test-professional/)。
这种方法可以非常快速地生成一组测试,但是很不幸它非常脆弱。一旦您修改页面的布局方式,那么测试中断的风险就很高。对于布局不断变化的站点来说,这意味着您很可能不得不定期重新记录您的测试。
对象模型
第二种方法是使用一种更加有计划性的技术,即编写测试来构建对象,该对象用于请求HTTP请求、到达服务器并取回代表HTTP响应的对象。尽管这种方法的工作量比使用代理记录会话要大,但是受到HTML布局影响而中断的可能性更小。包括HTTPUnit ()、HTMLUnit ()和jWebUnit (在内的几个库都提供用于模拟浏览器交互的API。
页面流示例
为了举例说明对象模型方法,让我们看一看HTMLUnit。它的API为服务器返回的HTML页面提供一个对象模型。每个请求返回一个HtmlPage,然后您可以查询它的内容。找出页面中的链接之后,您可以模拟一个用户在浏览器中点击它,然后它会返回另一个HtmlPage。类似地,您可以定位页面中的表单、找出特定的字段、设置值,然后提交给服务器。
HTMLUnit 使用Rhino JavaScript引擎,让您可以测试页面中的脚本。然而,要注意有一点很重要,即它只支持大多数浏览器支持的JavaScript的一个子集,而且JavaScript的行为总是至少有些依赖于浏览器。
为了演示如何测试一个web站点,我使用了WebLogic Workshop 8.1 SP2 SamplesApp中的multipleForms页面流。在下载的代码中,您可以在JPFWebProject项目中找到它。测试包括的流部分有两个文本字段。在其中输入值并点击提交按钮之后,这些值就会显示在后续的页面中。
用于这个例子的JUnit 测试用例是{JPFTestProject}/JPFTest.java。如上所述,它有一个main()方法,这样您就可以通过点击IDE中的Start按钮来运行它。测试方法的相关代码如下:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-31119-7.html
1亿
纯天然为卖点
“世界上由龙变虫的国家
这话说的很实在