单元测试(部分)

什么是单元测试

  • 单元测试:对软件中的最小可测试单元进行测试。只要测试目标为一个方法,也可能为一个个单独的操作。

  • 单元测试意义:分模块开发,方便的定位到哪个单元出了问题,保证了代码质量;为测试驱动开发,敏捷开发的核心。

  • 中小型公司单元测试:产品经理出原型图->ui出设计图->前端项目写好->交给别人点点点测试

  • 敏捷开发(快速迭代,快速测试),用测试驱动开发,先写测试再写开发:产品经理提出需求->高级前端员分析需求->实现 需求所需要的东西、方法->写出对应的单元测试代码->开始写代码->跑测试->通过,代码合格才可以提交。

单元测试由前端完成,测试员只进行最终的项目压力和流量等的测试。
单元测试有哪些常用库
单元测试核心内容:

  • 测试框架:Jest-开箱即用,简单轻松,但自定义配置麻烦;Mocha-需要自行配置…
  • 断言库(判断结果是否符合预期):Chai-支持所有风格、Assert-node环境直接使用
  • Mock库(用mock值替代a方法中应用的b方法的返回值,从而屏蔽b方法的影响):sinon
  • Test runner(模拟浏览器环境,使执行js代码不需打开浏览器):Karma
  • 覆盖率工具(给出报告,显示单元测试测了项目方法的多少,不需到100%):istanbul(行覆盖率、函数覆盖率、分支覆盖率)

核心工作:写测试用例

//测试套件-一大堆测试样例组合在一起,针对一个页面
//测试用例,针对一个方法

//弄一个文件夹,npm --install jest -g全局安装jest;到本地安装jest;新建test.js
describe("study unittest",()=>{ //新键测试套件
	it("tese a",()->{
		var res=a(1,2);
		//断言
		expect(res).toEqual(3);
	}) //创建测试用例
})
//本地jest进行测试

//异步方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
//mock由外部依赖
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在vue中基本的使用单元测试
在创建项目中可选。创建后unit文件夹为单元测试,e2e为集成测试(端到端).
unit一个文件对应一个组件的测试

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,作为AI语言模型,我无法提供完整的源代码。但是,我可以给出一个简单的示例,以帮助您理解如何编写一个图书管理系统的web页面和Junit单元测试部分。 1. JSP部分 首先,我们来编写一个用户注册页面的JSP部分。假设我们已经有了一个名为"register.jsp"的文件。 ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>用户注册</title> </head> <body> <h1>用户注册</h1> <form method="post" action="register"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> 确认密码:<input type="password" name="confirmPassword"><br> <input type="submit" value="注册"> </form> </body> </html> ``` 在这个页面中,我们使用了一个表单,让用户输入用户名、密码和确认密码。当用户点击"注册"按钮时,表单会提交到一个名为"register"的Servlet中。 2. Servlet部分 接下来,我们来编写"register"Servlet的部分。假设我们已经有了一个名为"RegisterServlet.java"的文件。 ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); String confirmPassword = request.getParameter("confirmPassword"); if (password.equals(confirmPassword)) { // 在这里保存用户信息到数据库或其他存储方式中 response.sendRedirect("success.jsp"); } else { response.sendRedirect("error.jsp"); } } } ``` 在这个Servlet中,我们首先从请求中获取到用户输入的用户名、密码和确认密码。然后,我们判断密码和确认密码是否相同。如果相同,我们就可以将用户信息保存到数据库或其他存储方式中,并重定向到一个名为"success.jsp"的页面;如果不相同,则重定向到一个名为"error.jsp"的页面。 3. Junit单元测试部分 最后,我们来编写一个使用Junit和Cactus进行自动化测试的单元测试部分。假设我们已经有了一个名为"RegisterServletTest.java"的文件。 ```java import static org.junit.Assert.*; import java.io.IOException; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import com.meterware.httpunit.GetMethodWebRequest; import com.meterware.httpunit.PostMethodWebRequest; import com.meterware.servletunit.ServletRunner; import com.meterware.servletunit.ServletUnitClient; import com.meterware.servletunit.InvocationContext; import com.meterware.httpunit.WebResponse; @RunWith(Cactus.class) public class RegisterServletTest { private ServletRunner sr; private ServletUnitClient sc; @Before public void setUp() { sr = new ServletRunner(); sr.registerServlet("register", RegisterServlet.class.getName()); sc = sr.newClient(); } @Test public void testRegister() throws IOException, ServletException { PostMethodWebRequest request = new PostMethodWebRequest("http://localhost:8080/register"); request.setParameter("username", "test"); request.setParameter("password", "123456"); request.setParameter("confirmPassword", "123456"); InvocationContext ic = sc.newInvocation(request); ic.getService().invoke(ic.getRequest(), ic.getResponse()); WebResponse response = ic.getServletResponse(); assertEquals("http://localhost:8080/success.jsp", response.getURL().toString()); request = new PostMethodWebRequest("http://localhost:8080/register"); request.setParameter("username", "test"); request.setParameter("password", "123456"); request.setParameter("confirmPassword", "111111"); ic = sc.newInvocation(request); ic.getService().invoke(ic.getRequest(), ic.getResponse()); response = ic.getServletResponse(); assertEquals("http://localhost:8080/error.jsp", response.getURL().toString()); } } ``` 在这个单元测试中,我们使用了Junit和Cactus来模拟一个Servlet容器,并发送两个POST请求来测试"register"Servlet。第一个请求是一个有效的注册请求,期望重定向到"success.jsp"页面;第二个请求是一个无效的注册请求,期望重定向到"error.jsp"页面。如果这两个预期都得到了满足,那么我们就可以认为我们的注册功能已经通过了自动化测试。 以上是一个简单的示例,希望对您有帮助。由于实际情况的复杂性和个性化,具体的实现方式可能会有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值