当前位置: 首页 > news >正文

【单元测试】

一、框架

不同的编程语言有不同的测试框架,以下是一些常见的测试框架:

1)Java:JUnit、TestNG

2)Python:unittest、pytest

3)JavaScript:Jest、Mocha

4)C#:NUnit、xUnit

5)C++:Google Test

二、编写单元测试的步骤

1、确定测试目标

首先,明确你要测试的函数或方法的功能。例如,一个函数的目的是计算两个数的和,那么测试目标就是验证这个函数在各种输入下都能正确返回结果。

 2、编写测试用例

  • 正常输入:测试函数在正常输入下的行为。例如,对于加法函数,输入两个正数、两个负数、一个正数一个负数等。

  • 边界输入:测试函数在边界条件下的行为。例如,输入最大值、最小值、零等。

  • 异常输入:测试函数在异常输入下的行为。例如,输入非法类型(如字符串代替数字)、空值等。

  • 特殊输入:测试函数在特殊条件下的行为。例如,输入两个相同的数、输入两个相反数等。

3、编写测试代码(用例开发) 

  • 使用测试框架提供的语法和功能编写测试代码。以下是2个简单的例子:

1)示例:Python 中的单元测试

假设有一个函数 add,用于计算两个数的和:

Python复制

def add(a, b):
    return a + b

使用 unittest 框架编写单元测试:

Python复制

import unittest

class TestAddFunction(unittest.TestCase):
    def test_add_positive_numbers(self):
        self.assertEqual(add(2, 3), 5)

    def test_add_negative_numbers(self):
        self.assertEqual(add(-1, -1), -2)

    def test_add_zero(self):
        self.assertEqual(add(0, 0), 0)

    def test_add_mixed_numbers(self):
        self.assertEqual(add(-1, 1), 0)

    def test_add_with_non_numeric_input(self):
        with self.assertRaises(TypeError):
            add("a", 1)

if __name__ == '__main__':
    unittest.main()
2)示例:Java 中的单元测试

假设有一个类 Calculator,其中有一个方法 add

java复制

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

使用 JUnit 框架编写单元测试:

java复制

import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class CalculatorTest {
    @Test
    public void testAddPositiveNumbers() {
        assertEquals(5, new Calculator().add(2, 3));
    }

    @Test
    public void testAddNegativeNumbers() {
        assertEquals(-2, new Calculator().add(-1, -1));
    }

    @Test
    public void testAddZero() {
        assertEquals(0, new Calculator().add(0, 0));
    }

    @Test
    public void testAddMixedNumbers() {
        assertEquals(0, new Calculator().add(-1, 1));
    }
}

三、运行单元测试

  • 运行测试:使用测试框架提供的工具运行测试。例如,在 Python 中可以运行 unittest.main(),在 Java 中可以使用 IDE 的测试运行功能。

  • 检查结果:确保所有测试用例都通过。如果有测试失败,需要检查代码并修复问题。

四、维护单元测试

  • 更新测试用例:当代码发生变化时,需要更新测试用例以确保测试的完整性。

  • 持续集成:将单元测试集成到持续集成(CI)流程中,确保每次代码提交都能自动运行测试。

五、最佳实践(单测的应用)

  1. 测试覆盖率尽量提高测试覆盖率,确保代码的每个分支和逻辑都被测试到。

  2. 独立性:每个测试用例应该是独立的,不依赖于其他测试用例。

  3. 可读性:测试代码应该清晰易懂,便于维护。

  4. 自动化将单元测试集成到自动化测试流程中,确保每次代码提交都能自动运行测试。

相关文章:

  • 【Docker系列七】Docker Compose 命令详解
  • 【AI大模型】搭建本地大模型GPT-J:详细步骤及常见问题
  • 代码随想录第六十二天| Floyd 算法精讲 A * 算法精讲 (A star算法) 最短路算法总结篇
  • SpringBoot @Scheduled Cron 表达式 详解
  • 04STM32外部中断
  • 2025-03-25 学习记录--C/C++-PTA 习题11-7 奇数值结点链表
  • LVS的 NAT 模式实验
  • Python 非异步函数执行异步函数的方案
  • Windows系统下Pycharm+Minianaconda3连接教程【成功】
  • 第三百八十七节 JavaFX教程 - JavaFX CSS
  • 数据结构--分块查找
  • AI时代SEO的范式重构:从关键词优化到认知引擎驱动的深度思考
  • Gunicorn+Eventlet无法收到SocketIO发送的消息
  • 【软件测试】:软件测试实战
  • 计算机网络 第一章:计算机网络和因特网(2)
  • Qt——使用第三方库QtXlsx操作Excel表,实现MySQL读取的数据保存至excel文件
  • Transformer、ELMo、GPT、BERT的详细理解
  • Mybatis操作数据库(注解+xml两个方式)
  • 深入理解Java集合框架:构建高效、灵活的数据管理方案
  • Android设计模式之单例模式
  • 农业开发公司企业网站建设/怎么优化网站
  • 云桥在线客服/吉安seo网站快速排名
  • 东莞做网站费用/培训机构咨询
  • 网站开发实践实验报告/建站 seo课程
  • 外贸汽车网站有哪些/百度账号登录不了
  • 迅驰互联网站建设网络推广怎么样/最新黑帽seo教程