快速入门
知识点
相关文章
更多最近更新
更多基于servlet容器测试cactus使用教程--junit单元测试
2019-03-05 15:11|来源: 网路
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 junit4 单元测试问题[2022-03-16]
@BeforeClass,@AfterClass 只能修饰static方法,相对于具体类只执行一次。 @Before,@After 才是修饰一般 (非static) 方法的,在每次 new 一个对象的时候都会执行一次 -
请问下,JUnit单元测试有什么用??[2022-03-22]
你自己测试只是意思一下而已,不够正规用JUnit测试会有测试案例和测试结果,方便给领导汇报工作作为依据而且听说有的公司先写测试案例,后实现功能,这种情况下就必须要用了 查看原帖>> 希望采纳 -
关于Junit单元测试的问题[2022-11-01]
需要你初始化连接池再做单元测试。 一般的方法是写一些专为测试用的连接池。 -
请问下,JUnit单元测试有什么用??[2021-11-25]
你自己测试只是意思一下而已,不够正规用JUnit测试会有测试案例和测试结果,方便给领导汇报工作作为依据而且听说有的公司先写测试案例,后实现功能,这种情况下就必须要用了 -
Junit单元测试assertEquals的使用问题?[2022-08-30]
最好用jnuit4.x的,使用方便,而且支持新特性。你先试试能不能解决 -
单元测试一个Java Servlet(Unit testing a Java Servlet)[2023-11-15]
尝试HttpUnit ,尽管您可能会最终编写比“单元测试”(单一类)更多的“集成测试”(模块)的自动化测试。 Try HttpUnit, although you are likely to end up writing automated tests that are more 'integration tests' (of a module) than 'unit tests' (of a single class). -
Servlet单元测试(Servlet unit test)[2023-06-10]
如果可能,请遵循skaffman的建议。 如果不是,或者如果要测试Servlet的行为作为前端控制器而不是它们内部的业务逻辑,则可以使用: 的HtmlUnit 硒 仙人掌 (但我不知道它是否已经支持TestNG) Follow skaffman's advice if possible. If not, or if you want to test the behaviour of the servlets as front-end controllers, rather than the business ... -
不熟悉w / Cactus,但你应该可以使用JPDA而不是JDWP。 简单地在JVM args中放置这样的东西(在Eclipse运行配置,java cmd行中,或者Cactus接受其JVM的args): -agentlib:JDWP =运输= dt_socket,地址=本地主机:1234,服务器= Y,暂停= Y (如果JRE版本<5,则使用“-Xrunjdwp:”而不是“-agentlib:jdwp”) 然后无论你在哪里开始,它都会等你连接。 然后在Eclipse中创建一个新的调试配置作为远程Java应用 ...
-
我不知道JUnitEE,但您可以尝试使用HttpUnit http://httpunit.sourceforge.net/index.html进行单元测试servlet。 看不出它与JUnit 4不兼容的任何原因。 I don't know JUnitEE but you can try to use HttpUnit http://httpunit.sourceforge.net/index.html for unit testing servlets. Cannot see any reason it ...
-
测试按顺序执行。 你不应该依赖这个事实,因为这表明你没有编写纯单元测试并创建了反模式(在测试方面)。 每个测试必须是它自己独立的工作, After和Before初始化之外没有外部依赖。 我相信每个测试都是在自己的线程中执行的,再次回到你的测试套件而不是纯粹的单元测试。 我担心的是,如果在真实环境中正确使用(如文档所述),那些测试可能会导致不存在的问题。 单元测试仅验证函数的一小部分,通常是一个可能的逻辑分支。 如果要测试系统集成,则需要执行所谓的集成测试。 此外,如果您正在寻求进行多线程测试,我强烈建议: ...