您的位置:首页 > 其它

gradle - 简单测试驱动web程序

2013-11-10 18:01 417 查看
# 平台 ubuntu linux

# 工程名称(顶级目录名)tdd

# 使用到的jar包

servlet-api.jar

org.springframework.core-3.0.4.RELEASE.jar

commons-logging-1.0.4.jar

spring-mock.jar

一、实现一个基于servlet以纯文本回显请求参数的例子。

1)编写EchoServlet代码

因为需要用到gradle来实现自动化构建,所以遵循gradle中java工程的目录约定。
> mkdir -p src/main/java/com/thoughtworks/servlet
> cd src/main/java/com/thoughtworks/servlet
> touch EchoServlet.java

package com.thoughtworks.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class EchoServlet  extends HttpServlet{

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("Content-Type", "text/plain"); //设置纯文本响应头
PrintWriter writer = response.getWriter();
Enumeration e = request.getParameterNames();      // 获取请求参数名
while(e.hasMoreElements()) {
String name = String.valueOf(e.nextElement());
String[] values = request.getParameterValues(name);
for(String v : values) {
writer.write(name+"="+v);
writer.write("\n");
}
}
writer.close();
}
}


2)编写EchoServlet单元测试用例

遵循gradle标准,故:
> mkdir -p src/test/java/com/thoughtworks/servlet/
> cd src/test/java/com/thoughtworks/servlet/
> touch EchoServletTest.java

package com.thoughtworks.servlet;

import static org.junit.Assert.*;

import org.junit.Test;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;

public class EchoServletTest {

@Test
public void testEchoingParametersWithMultipleValues() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();

request.addParameter("param1", "value1");
request.addParameter("param2", "value2");
request.addParameter("param3", "value3");

new EchoServlet().doGet(request, response);

String[] lines = response.getContentAsString().split("\n");

assertEquals("Expected as many lines as We have parameter values",
3, lines.length);
assertEquals("param1=value1", lines[0]);
assertEquals("param2=value2", lines[1]);
assertEquals("param3=value3", lines[2]);

}
}


3)编写gradle的配置文件 build.gradle

apply plugin: 'idea'
apply plugin: 'java'

repositories {
mavenCentral()
}

dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
testCompile 'junit:junit:4.11'
}


以上代码使用可参考我的blog《gradle-使用介绍(一)》http://blog.csdn.net/why3query/article/details/15028313

这里dir: 'libs'加载本地的jar文件

> mkdir libs

然后将开头处提及的jar包放到libs目录下。

4) 运行gradle命令
> gradle build.gradle

:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE
:assemble UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build UP-TO-DATE
BUILD SUCCESSFUL

Total time: 7.091 secs


生成和src/同级的build目录

build/

    |- classes/

    |- dependency-cache/

    |- libs/

    |- reports/

    |- test-results/

    |- tmp/

这里注意apply plugin: 'idea'

指的是可以构建IntelliJ的idea工程。

> gradle idea

生成三个文件和一个目录

tdd.iml

tdd.ipr

tdd.iws

out/

    |- production/

    |- test/

之后可以通过IntelliJ open选项打开tdd工程。

到此就完成了使用gradle自动化构建servlet请求参数以文本形式回显的java工程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gradle 单元测试