到目前为止,nginx模块测试一直使用perl脚本作为工具,perl作为脚本语言,具有简单、灵活的特点,加上本身附带了为测试nginx设计的包,用它来测试nginx模块已非常优秀,但仍有不足之处,如调试不便,也不利于维护,遇到问题查找问题比较麻烦,所以尝试用java代替perl,做一个可行性的调研,而用java来测需要借助一个工具的帮助,这就是httpunit。
Httpunit是基于junit的一个测试框架,主要关注于测试web应用,解决使用JUnit框架无法对远程Web内容进行测试的弊端,虽然也有Unit的名字,但它本身并不是测试工具,因为它不提供任何的测试或断言方法,正确来说,它是测试时的辅助工具,它协助您进行HTTP请求响应,让您在请求上加上参数、设置Cookie等.并能通过各种函数获取分析response。
public class FirstHttpUnitTest extends TestCase { public void testCaterpillarOnlyfu() throwsMalformedURLException, IOException, SAXException { WebConversation webConversation = new WebConversation(); WebRequest request = new GetMethodWebReques(http://XXX.XXX.XXX/XXX); // 访问的url地址,可在其后直接加上url 参数 WebResponse response = ebConversation.getResponse(request); //然后可通过response对象调用httpunit的方法获取想要的信息来与预期结果进行比对 } |
在上面这段代码里,WebConversation打开了一个http的协议对话,WebRequest用来设置相关的请求参数,之后用WebConversation连接目的网页,然后得到WebResponse,然后可通过response对象调用httpunit的方法获取想要的信息来与预期结果进行比对
如果是通过post方法访问,WebRequest req = new PostMethodWebRequest(http://XXX.XXX.XXX/XXX);
下面的截图是nginx简转繁模块用java替换后与httpunit相关的部分,增加相应的http header
再简单介绍一下nginx模块测试中需要注意的地方:
1.nginx模块测试需要在建立一个临时的测试目录,以根据不同用例需求在用例运行中写入不同的nginx配置以及指定所需的文件
File file = new File(“/home/admin/temp_nginx/nginx.conf”);
file.createNewFile();//创建临时配置文件
FileWriter fw = new FileWriter(“/home/admin/temp_nginx/nginx.conf”);
fw.write(“master_process off;\n”);//写入临时配置文件,根据不同的配置需求写入,这里只是用一行来举一个例子