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

【单元测试】

一、框架

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

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. 自动化将单元测试集成到自动化测试流程中,确保每次代码提交都能自动运行测试。

原文地址:https://blog.csdn.net/weixin_42333261/article/details/146491744
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/610883.html

相关文章:

  • 若依前端框架增删改查
  • 练手项目1:Dockerized Redis访问计数器
  • HarmonyOS人脸比对技术自学指南与实战分享
  • GPU服务器集群网络规划方案
  • Redis原理:Monitor 实现
  • 【PGCCC】PostgreSQL Certified Master 个人专访 | 第二期 何雄
  • 【面试八股】:常见的锁策略
  • Linux驱动开发进阶(二) - sysfs文件系统
  • 测试用例的场景化分析方法
  • Ubuntu 14.10 Desktop (i386):经典 32 位操作系统的回顾与指南(附安装包)
  • 2024年MathorCup数学建模B题甲骨文智能识别中原始拓片单字自动分割与识别研究解题全过程文档加程序
  • 智慧产科管理系统源码,孕产保健信息系统,Java语言Vue和ElementUI框架开发
  • spring boot + thymeleaf整合完整例子
  • 婚姻的解构与重构 | 一场关于选择与责任的探索
  • 二叉树相关算法实现:判断子树与单值二叉树
  • ISIS-3 LSDB链路状态数据库同步
  • mysql-connector-java-5.1.37.jarJava连接器
  • C++智能指针万字详细讲解(包含智能指针的模拟实现)
  • 算法设计——最坏时间复杂度分析
  • 美摄科技开启智能汽车车内互动及娱乐解决方案2.0