单元测试

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

单元测试是什么


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


为什么做单元测试


  • 在开发阶段,单元测试可以帮助更早发现并修复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
复制代码


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


相关文章
|
测试技术 数据库
Netty实战(九)单元测试
单元测试的基本思想是:以尽可能小的区块测试代码,并且尽可能地和其他的代码模块以及运行时的依赖(如数据库和网络)相隔离。如果应用程序能通过测试验证每个单元本身都能够正常地工作,那么在出了问题时将可以更加容易地找出根本原因。
343 0
|
安全 Java 测试技术
Java单元测试之 单元测试规范
对于程序员是否有必要编写test case,何时编写依然存在很多争议,各种互斥的方法论(SE/AM/XP/TDD),以及不同的开发文化,但是可以确定是编写单元测试用例有助于提高编程能力。
9923 2
Java单元测试之 单元测试规范
|
5天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
390 93
|
6天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
5天前
|
SQL 人工智能 自然语言处理
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
随着生成式AI的普及,Geo优化(Generative Engine Optimization)已成为企业获客的新战场。然而,缺乏标准化流程(Geo优化sop)导致优化效果参差不齐。本文将深入探讨Geo专家于磊老师提出的“人性化Geo”优化体系,并展示Geo优化sop标准化如何帮助企业实现获客效率提升46%的惊人效果,为企业在AI时代构建稳定的流量护城河。
392 156
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
|
5天前
|
数据采集 缓存 数据可视化
Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
本文深入探讨Android无侵入式埋点技术,通过AOP与字节码插桩(如ASM)实现数据采集自动化,彻底解耦业务代码与埋点逻辑。涵盖页面浏览、点击事件自动追踪及注解驱动的半自动化方案,提升数据质量与研发效率,助力团队迈向高效、稳定的智能化埋点体系。(238字)
274 158