gradle - 简单测试驱动web程序

# 平台 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工程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值