首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Junit中使用封装的Tomcat 7测试Servlet3.0注释基servlet

如何在Junit中使用封装的Tomcat 7测试Servlet3.0注释基servlet
EN

Stack Overflow用户
提问于 2011-03-14 12:34:46
回答 2查看 946关注 0票数 3

我想编写一个junit测试来验证tomcat 7的行为,它与Servlet3.0注释(@WebServlet@ServletSecurity)有关。

到目前为止,我要做的是这个测试:

代码语言:javascript
复制
@Test
public void testDoGet()
     throws ServletException, LifecycleException, IOException {             
  Tomcat tomcat = new Tomcat();        
  tomcat.setPort(8080);        

  Context ctx = tomcat.addWebapp("/", 
     new File("target").getAbsolutePath());             
  Tomcat.addServlet(ctx, "hello", HelloServlet.class.getName());
  ctx.addServletMapping("/hello", "hello");     
  tomcat.start();

  ByteChunk chunk = new ByteChunk();        
  int responceCode = getUrl("http://127.0.0.1:8080/hello",chunk);

  System.out.println(responceCode + ": " + chunk.toString());

  tomcat.stop();
}

这个测试可以工作,但是它不尊重注释。

很明显,这个测试不考虑HelloServlet上的注释。,但我不知道如何“注册”servlet,以便使用基于注释的配置。有人能给我一个提示吗?如何构建一个这样的测试?

EN

回答 2

Stack Overflow用户

发布于 2011-03-14 13:19:32

我并不完全熟悉Servlet3.0注释,但我的理解是,您用@WebServlet标记类,用@GET@POST等对方法进行注释,对吗?

如果是,那么我认为servlet类的单元测试不应该涉及与上下文、URL路径等相关的任何内容。如果您的测试正在测试此逻辑,那么您将测试应用程序服务器的代码和逻辑,而不是您自己的类。

@WebServlet的单元测试中,我将坚持测试处理HTTP /response的方法,并断言给定特定的输入(在请求中),servlet返回预期的输出(在响应中)。

票数 2
EN

Stack Overflow用户

发布于 2011-03-14 12:56:05

我不知道这是否解决了问题,但是可以显式地将servlet版本设置为3.0:

代码语言:javascript
复制
ctx.setEffectiveMajorVersion(3);
ctx.setEffectiveMinorVersion(0);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5298640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档