一.TDD开发过程
回顾TDD的开发过程,我们是在不断重复如下过程,直至需求完成。
二.TDD的收益
三.单元测试
TDD是测试驱动开发,理所当然与单元测试有着密不可分的关系。
1.单元测试的目的:
a.拥抱变化
b.保证质量
c.好的单元测试可用来做为文档
d.也是一个重要的设计工具
2.单元测试过程:3A
3.测试类
a.命名:[被测试类]Test
b.测试类与被测试类在相同的包名下
c.一个被测试类对应一个测试类
4.测试目的和意图:
a.通过方法名表达测试目的和意图
b.Given-When-Then
5.测试方法:
a.案例一定要有验证
b.一个测试案例只测一个场景
c.案例独立不要互相依赖
d.测试方案中不要try/catch异常
e.测试方法中不要出现System.out或者Logger
6.测试用例三部曲:Arrange-Act-Assert
7.为什么要写单测:
a.快速反馈
b.自信
c.进度可视化
d.明确目标
e.聚焦
f.说明书
g.回归测试
h.拆分功能
i.可测试
j.质量保证
k.设计
8.Junit Cheat Sheet
a.Annotations
@Test
b.Assertions
assertEquals
assertTrue/assertFalse
assertNull/assertNotNull
assertSame/assertNotSame:比较引用
fail/pass
9.单元测试
Adv.Assertion
a.约束验证:assertThat([actual],[matcher])
is(true)
not(nullValue())
either(containsTring("a")).or(containsString("b"))
anyOf(containsString("a"),containsString("b"))
hasItem(orderl)
b.第三方/自定义断言
c.每个测试案列
准备:@Before
清理:@After
d.每个测试类
准备:BeforeClass
清理:AfterClass
10.单元测试样例
public class StringParserTest {
@Rule
public ExpectedException expectedException = ExpectedException.none();
@Test
public voi should_throw_exception_when_given_character() {
expectedException.expect(IllegalArgumentException.class);
expectedException.expectMessage("Argument should be int");
new StringParser().parseAndSum("a");
}
@Test(expected = IllegalArgumentException.class)
public void should_throw_exception_when_given_null() {
new StringParser().parseAndSum(null);
}
}
Timeout
public class SquareTest {
@Test(timeout = 1000)
public void squareRoot() {
calculator.squareRoot(4);
assertEquals(2, claculator.getResult());
}
}
参数化运行Junit
@RunWith(Parameterized.class)
public class EmailUtilsParameterizedTest {
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList
@RunWith(Theories.class)
public class EmailUtilsTheoryTest {
@DataPoints
public static TestData[] ARRAYS = new
@Theory
11.Test Data
a.Data Mother
b.Test data organization Builder
相关推荐
单元测试与TDD实践 **一、单元测试之测试目的** 单元测试,作为软件开发过程中的重要环节,其核心目标在于确保代码的质量、可维护性和可扩展性。它通过独立测试软件中的最小可测试单元,如函数或方法,来验证其...
**TDD单元测试详解** 测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,它强调在编写实际代码之前先编写测试用例。这种方法由Kent Beck在其著作《Test-Driven Development: By Example》中...
包含编译出的三个必须的链接文件: libcppunit.a libqxcppunitd.a libqxrunnerd.a ,及main.cpp实例和简单的test格式。 可用来针对Qt的程序进行单元测试
本主题将聚焦于如何在基于C语言的嵌入式环境,特别是在Keil IDE中,利用Unity这个轻量级的单元测试框架来搭建自动化测试流程。 Unity是一个专门为微控制器和嵌入式系统设计的开源单元测试框架。它的特点是小巧、...
在C/C++项目中应用测试驱动开发(TDD)的方法,从单元测试到集成测试,详尽介绍了测试的基础、框架选择、实际应用及最佳实践。文章首先阐述了TDD的核心理念及其优势,包括提升代码质量、减少错误和改进设计等。接着...
(C#语言版)单元测试实例,主要功能包括:(1)输入数据到textbox,以逗号间隔,然后求数组最大值、求和,并将结果显示出来,并针对于数组求最大值函数和求和函数写单元测试代码;(2)连接数据库,写出单元测试代码来测试求...
单元测试:单元测试案例:测试驱动开发(TDD)原理与实践.docx
1. 编写测试:首先,开发者编写一个失败的单元测试,这个测试针对即将实现的功能。这称为"红"阶段,因为测试会因未实现的功能而失败。 2. 实现功能:然后,开发者编写最小的代码量,使刚刚创建的测试通过。这一步...
测试驱动开发(TDD)是一种软件开发方法,它要求开发者首先编写失败的单元测试用例,然后再编写足够的代码以使测试通过。接下来,开发者会对代码进行重构以改善设计,同时确保测试依然能够通过。这个过程循环进行,...
在VS2005中,微软引入了内置的单元测试框架,使得开发者能够方便地进行TDD实践。 **单元测试**是软件开发中的一个重要环节,它对程序的最小可测试单元进行验证,确保每个模块的功能正确无误。在VS2005中,我们可以...
2. 单元测试的基础:了解如何编写有效的单元测试,包括断言、隔离和覆盖所有可能的执行路径。 3. 使用mekito进行模拟:学习如何使用mekito创建和配置模拟对象,以及如何使用它来测试复杂的依赖关系。 4. TDD在敏捷...
单元测试之道(C#),TDD, 单元测试之道(C#),TDD, 单元测试之道(C#),TDD
在描述中提到的“我公司的测试规范”,意味着讨论的是公司内部的测试流程、标准和指南,这些规范可能包括单元测试、集成测试、系统测试等不同层次的测试策略,以及如何进行测试文档的编写和维护。博文链接指向了一个...
TDD强调在编写实际功能代码之前,先编写能够失败的单元测试,确保测试覆盖了预期的功能需求。这种方式有助于开发者更早地发现和修复问题,提高代码质量和可维护性。 在“测试驱动编程 TDD 实例”中,我们将探讨如何...
单元测试不仅覆盖了核心功能的正常流程,还关注了边界条件、异常情况,甚至是潜在的缺陷。TDD推动了开发人员在编码前进行周密的设计,提高了程序健壮性和稳定性。 采用TDD的另一个优点是能够促进设计的改进。由于...
史上最全软件测试技术全套教程,包括: Postman Selenium 单元测试 压力测试 回归测试 安全测试 性能测试 测试工具 集成测试 等流行技术的系列教程
在Python中,TDD可以通过使用诸如`unittest`、`pytest`或`nose`等单元测试框架来实现。这些框架提供了编写和运行测试用例的结构和工具,使得测试过程更为规范和高效。 1. **unittest框架**:Python的标准库中内置了...
测试驱动的编程是让 程序员测试(即单元测试 ― 重申一下,只是换用一个术语)决定您所编写的代码。这意味着您必须在编写代码之前进行测试。测试指出您 需要编写的代码,从而也 决定了您要编写的代码。您只需编写...
在PHP世界中,TDD可以帮助开发者构建更健壮、可维护的代码,通过不断的单元测试确保代码质量。本篇文章将深入探讨PHP测试框架在TDD环境下的应用。 首先,我们要理解TDD的基本流程:**红-绿-重构**。"红"阶段意味着...