Skip to content

Commit

Permalink
Update how-to-write-unit-tests.md
Browse files Browse the repository at this point in the history
  • Loading branch information
lightClouds917 authored Feb 23, 2024
1 parent f364cd8 commit 11faeb2
Showing 1 changed file with 3 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ author: 汪忠祥 - Apache Seata committer,trustdecision 技术专家
date: 2024-02-20
---

# 背景
## 背景
随着 Seata 项目的不断发展和壮大,我们的贡献者群体也在持续扩大。项目的功能不断增强,对于代码质量的要求也在提高。在这个过程中,我们期望每一位贡献者在提交功能代码的同时,能够附带规范、完备的测试用例。

一个优秀的项目,其完备的单元测试是基本保障。Test-Driven Development(TDD)理念已经提出多年,它强调在编写功能代码之前先编写测试用例。通过编写单元测试,开发者可以更深入地理解代码中相关类和方法的作用,掌握核心逻辑,熟悉各种场景的运行情况。同时,单元测试也为开源项目提供了稳定安全的保障,使得项目在接受贡献者代码时,能够确保代码的质量和稳定性。 单元测试是质量保障的第一环,有效的单元测试能够提前发现90%以上的代码Bug问题,同时也能防止代码的腐化。在项目重构和演进过程中,单元测试起到了至关重要的作用,它能够确保重构后的代码仍然能够正常工作,不会引入新的Bug。

在社区看来,贡献合理的测试用例代码和贡献功能代码同样重要,为了帮助开发者编写出高质量的测试用例,本文给出一些基础的规范和建议。
# 推荐的框架
## 推荐的框架
当前社区使用以下三个框架编写测试用例;
### junit5
junit是Java中最常用的单元测试框架,用于编写和运行可重复的测试用例。
Expand Down Expand Up @@ -58,7 +58,7 @@ assertj是一个断言库,提供了一组易于使用和可读性很强的断
<version>${assertj-core.version}</version>
</dependency>
```
# 规范
## 规范
我们参考阿里巴巴JAVA开发手册,整理了一些建议及规范,分为不同的级别,其中【【强制】部分,开发者需要严格遵守,社区在合并代码时会按照强制规则进行review,【【推荐】【参考】部分,方便大家更好的了解我们对于测试用例的考量和原则。
##### 1.【强制】单元测试必须遵守 AIR 原则。

Expand Down Expand Up @@ -100,8 +100,3 @@ assertj是一个断言库,提供了一组易于使用和可读性很强的断
- 存在过多的外部依赖。
- 存在过多的条件语句。
说明:多层条件语句建议使用卫语句、策略模式、状态模式等方式重构。
##### 15.【参考】不要对单元测试存在如下误解:
- 那是测试同学干的事情。
- 单元测试代码是多余的。系统的整体功能与各单元部件的测试正常与否是强相关的。
- 单元测试代码不需要维护。一年半载后,那么单元测试几乎处于废弃状态。
- 单元测试与线上故障没有辩证关系。好的单元测试能够最大限度地规避线上故障。

0 comments on commit 11faeb2

Please sign in to comment.