基于servlet容器测试cactus使用教程--junit单元测试

2018-09-05|来源:

Cactus是一个基于JUnit框架的简单测试框架,用来单元测试服务端Java代码。Cactus框架的主要目标是能够单元测试服务端的使用Servlet对象的Java方法如HttpServletRequest,HttpServletResponse,HttpSession等


该项目主页:http://jakarta.apache.org/cactus/


1、导入jar(先导入以下几个,缺少的以后再加)



2、创建Servlet的测试类

/**
 * 只要写了一个类继承于 ServletTestCase,就会拥有相应的request等方法
 * 需要注意的一点就是:此时junit4中的Annotation全部不起作用
 * 就得按照junit3的方法来:setUp和tearDown用来做初始化和结束释放资源
 * testXX用来做测试
 * @author Administrator
 *
 */
public class TestLoginServletByCactus extends ServletTestCase {
  private LoginServlet servlet;
  //begin是在客户端执行的
  public void beginNoSession(WebRequest request) {
    request.setAutomaticSession(false);
    request.addParameter("username", "kh");
  }
    
  //在服务器端执行
  public void setUp() {
    servlet = new LoginServlet();
  }
  public void testNoSession() {
    //服务器端执行
    Assert.assertFalse(servlet.isLogin(request));
    Assert.assertEquals(request.getParameter("username"),"kh");
      
  }
    
  public void testSessionNoUser() {
    Assert.assertFalse(servlet.isLogin(request));
  }
    
  public void testSessionHasUser() {
    session.setAttribute("loginUser", new User());
    Assert.assertTrue(servlet.isLogin(request));
  }
    
  public void testDoGet() throws ServletException, IOException {
    servlet.doGet(request, response);
  }
    
  //客户端执行
  public void endDoGet(WebResponse resp) {
    try {
       Assert.assertEquals(resp.getTables()[0].getCellAsText(0,0),"111");
       Assert.assertEquals(resp.getTables()[0].getCellAsText(0,1),"222");
    } catch (SAXException e) {
       e.printStackTrace();
    }
  }
  
}


3、创建动态web环境并且配置web.xml

<servlet>
  <servlet-name>ServletRedirector</servlet-name>
  <servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>ServletRedirector</servlet-name>
  <url-pattern>/ServletRedirector</url-pattern>
  </servlet-mapping>


本文转自网络


相关问答

更多

java测试工具及教程

测试看你是什么类型的测试 单元测试:Junit或TestNG Web测试:WatiJ、Selenium2.0 功能测试及压力测试:Jmeter、LoadRunner Bug管理:TestDirector

java spring项目的controller层的代码怎么用junit写单元测试用例

Spring项目controller 是依赖springmvc的 直接启动测试,是没有初始化spring容器(web.xml中初始化)的 如果是dao层 service层的测试可以用单元测试,controller层建议还是 启动web项目吧 补充一下Java WEB开发基础知识

Spring Boot中使用Test单元测试报错javax.websocket.server.ServerContainer not available。

那说明单元测试里面没有包含servercontainer吧,单元测试加载的东西没有项目正规启动以后那么多,需要仔细检查如何在单元测试中加载servercontainer。

如何使用junit4写单元测试用例

JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。 先 简单解释一下什么是Annotation,这个单词一般是翻译成元数据。元数据是什么?元数据就是描述数据的数据。也就是说,这个东西在Java里面可以 用来和public、static等关键字一样来修饰类名、方法名、变量名。修饰的作用描述这个数据是做什么用的,差不多和public描述这个数据是公 有的一样。想具体了解可以看Core Java2。废话不多说了,直接进入正题。 我们 ...

Junit是什么??java的单元测试??java的单元测试是干什么的??单元测试是干什么的??

单元测试:是针对一个独立的工作单元进行正确性验证的测试。有时也被称为程序员测试,以同QA测试、客户测试相区分。 java的单元测试:在Java程序中,一个工作单元通常是指一个方法,那么也就是对一个方法进行测试。 JUnit:是一个单元测试框架,方便程序员进行单元测试代码的编写。

junit教程

相关文章

更多

最近更新

更多