【单元测试】

一、框架

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

python 复制代码
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复制

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复制

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

相关推荐
杨凯凡18 小时前
Mockito 全面指南:从单元测试基础到高级模拟技术
java·单元测试·mockito
代码续发19 小时前
如何编写单元测试
单元测试
慵懒学者20 小时前
16 Junit单元测试框架、反射、注解、动态代理(黑马Java视频笔记)
java·笔记·junit·单元测试
测试杂货铺2 天前
白盒测试用例的设计
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
杨凯凡2 天前
JUnit 全面指南:从基础到高级测试实践
java·junit·单元测试
zerohawk2 天前
【log4j】配置Slf4j
junit·单元测试·log4j
佟格湾2 天前
单元测试之Arrange-Act-Assert(简称AAA)
单元测试
川石课堂软件测试3 天前
涨薪技术|Docker容器数据管理
运维·功能测试·docker·容器·单元测试
niuniu_6663 天前
Selenium 简单入门操作示例
功能测试·selenium·测试工具·单元测试·dubbo·测试
天航星4 天前
VSCode Java 单元测试没有运行按钮
java·vscode·单元测试