单元测试

简介: 单元测试是一种软件测试,其测试软件的各个单元或组件。目的是验证软件代码每个单元是否按照预期执行。单元测试由开发人员在应用程序的开发(编码阶段)中完成。单元测试隔离一段代码并验证其正确性。一个单元可能是单个功能,方法,过程,模块或对象。

单元测试是什么


单元测试是一种软件测试,其测试软件的各个单元或组件。目的是验证软件代码每个单元是否按照预期执行。单元测试由开发人员在应用程序的开发(编码阶段)中完成。单元测试隔离一段代码并验证其正确性。一个单元可能是单个功能,方法,过程,模块或对象


为什么做单元测试


  • 在开发阶段,单元测试可以帮助更早发现并修复BUG,并节省成本


  • 它有助于开发人员了解代码库,并使他们能够快速做出修改


  • 好的单元测试相当于项目文档


  • 单元测试有助于代码重用,将我们的代码和测试都迁移到新项目。调整代码,直到测试再次运行。


单元测试的好处


  • 通过单元测试,开发者可以了解到提供了什么功能,对单元测试API有基本了解


  • 单元测试允许程序员在以后重构代码,并确保模块仍然正常工作(即回归测试)。该过程是针对所有功能和方法编写测试用例,以便每当更改导致故障时,都可以快速识别并修复该故障。


  • 由于单元测试的模块化性质,我们可以测试项目的各个部分,而无需等待其他部分完成。


单元测试的坏处


  • 单元测试不能够捕获程序中每个错误。即使在最简单的程序中,也不可能评估每种单元测试执行的路径。


  • 单元测试的本质是将重点放在代码的单元上。因此,它不能捕获集成测试的错误和更广泛的系统层面的错误。


推荐:单元测试和其他测试手段一起使用


VUE项目中使用单元测试


我们使用Vue-Test-Utils这个Vue.js官方的单元测试实用工具库,来编写VUE应用中的单元测试。


安装


这里,我们默认已经通过VUE的脚手架生成了项目,那么我们集成unit-jest插件就可以了。


vue add @vue/unit-jest
复制代码


编写简单测试用例


单元测试的文件:


// tests/unit/example.spec.js
import { shallowMount } from '@vue/test-utils'
import HelloWorld from '@/components/HelloWorld.vue'
describe('HelloWorld.vue', () => {
  it('renders props.msg when passed', () => {
    const msg = 'new message'
    const wrapper = shallowMount(HelloWorld, {
      propsData: { msg }
    })
    expect(wrapper.text()).toMatch(msg)
  })
})
复制代码


单元测试的组件:


<!--scr/components/HellowWorld.vue-->
<template>
  <div class="hello-world">msg is :{{msg}}</div>
</template>
<script>
export default {
  name: 'hello-world',
  data() {
    return {}
  },
  props: {
    msg: {
      type: String,
      default: 'this is props msg'
    }
  }
}
</script>
复制代码


此时,执行下面的命令行即可:


yarn run test:unit
或者
npm run test:unit
复制代码


这个时候,你就可以在控制台上看到测试用例正在跑~


相关文章
|
JSON 前端开发 JavaScript
javascript 实现纯前端将数据导出excel两种方式
<html> <head> <p style="font-size: 20px;color: red;">使用a标签方式将json导出csv文件</p> <button onclick='tableToExcel()'>导出</button> </head> <body> <script> const tableToExcel = () => { // 要导出的json数据 const jsonData = [ { name:'路人甲', ph
127 0
|
机器学习/深度学习 前端开发 JavaScript
当机器学习遇见SpringBoot,不一样的火花哦
当机器学习遇见SpringBoot,不一样的火花哦
799 0
|
Oracle 关系型数据库 物联网
PG中国开发者社区—樊智辉PG峰会专访
樊智辉,阿里云数据库技术专家。
2656 0
|
2天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1084 0
|
11天前
|
人工智能 运维 安全
|
1天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
363 0
|
10天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
2天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
273 0
|
9天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!