网站页面描述怎么写,青岛宣传片制作公司,网页设计公司未来三年费用利润,业务接单网站TDD 的核心理念是 “先写测试#xff0c;再写功能”#xff0c;其过程遵循一个严格的循环#xff0c;即 Red-Green-Refactor#xff1a;
TDD 的流程
1. Red#xff08;编写失败的测试#xff09;
根据需求#xff0c;先编写一个测试用例#xff0c;描述期望的行为。…TDD 的核心理念是 “先写测试再写功能”其过程遵循一个严格的循环即 Red-Green-Refactor
TDD 的流程
1. Red编写失败的测试
根据需求先编写一个测试用例描述期望的行为。运行测试用例这时测试会失败因为功能还没实现。失败的测试是 TDD 的起点用来验证当前功能还未完成。
2. Green实现功能使测试通过
编写代码实现功能只编写足够通过测试的代码。不追求完善或优化只需让测试通过。运行测试确保它变为绿色成功。
3. Refactor重构代码
在测试通过的前提下对代码进行重构。目标是提高代码质量如消除冗余、优化性能同时保持所有测试用例通过。运行测试用例确保重构后功能不变。
为什么先写测试
1. 提高代码质量
在功能实现前明确验证条件降低缺陷风险。保证功能模块始终可测试。
2. 支持重构
测试用例成为保障让开发者在重构时无需担心功能被破坏。
3. 明确需求
编写测试用例时开发者必须准确理解功能需求并转化为可验证的行为。测试引导功能开发避免开发过程中偏离需求。
举例
接口文档计算税收
接口概述
本接口用于根据用户提供的收入income和月份months计算应缴纳的税收。用户通过发送GET请求到指定URL传入收入金额和月份数接口将返回计算后的税收金额。
请求 URL
GET http://localhost:8087/getTax请求参数
参数名类型必填描述incomeint是用户的收入金额monthsint是收入的月份数
请求示例
GET http://localhost:8087/getTax?income1234months3响应格式
格式: JSON示例:
{tax: 123.45
}响应参数
参数名类型描述taxdouble计算出的税收金额
TDD
先创建接口
RestController
public class TaxController {AutowiredProcessTaxService processTaxService;GetMapping(/getTax)public ResponseEntity calculateTax(RequestParam int income , RequestParam int months) {return ResponseEntity.ok().body(null);}}我们需要在这里实现业务逻辑将收入和月份作为用户输入并处理税收。现在我们需要实现业务逻辑。我们从单元测试开始实现它。
public class ProcessTaxTest {InjectMocksProcessTaxService processTaxService;Beforepublic void init() {MockitoAnnotations.initMocks(this);}Testpublic void testTaxCalcualtion(){int income 10;int months 5;double totalTax processTaxService.calculate(income, months);Assert.assertEquals(15.0, totalTax, 0.001);}}在这里我创建了ProcessTaxService类它将用于实现税收计算代码。但是这个类在我们的代码库中不存在红色标志因此我们需要现在创建它。
Service
public class ProcessTaxService {private double taxPercentage 0.3;public double calculate(int income, int months) {return income * months * taxPercentage;}}重构代码请确保传入的income和months参数为正整数。
Service
public class ProcessTaxService {private double taxPercentage 0.3;public double calculate(int income, int months) {if (income 0 || months 0) {throw new IllegalArgumentException(Income and months must be positive values.);}return income * months * taxPercentage;}}RestController
public class TaxController {AutowiredProcessTaxService processTaxService;GetMapping(/getTax)public ResponseEntity calculateTax(RequestParam int income , RequestParam int months) {try {double tax processTaxService.calculate(income, months);return ResponseEntity.ok().body(tax);} catch (IllegalArgumentException e) {return ResponseEntity.badRequest().body(null);}}}现在我们已经成功地编写了使用测试驱动方法计算总税收所需的代码。将ProcessTaxService类集成到Controller类中在用户发送请求时计算税收。
RestController
public class TaxController {AutowiredProcessTaxService processTaxService;GetMapping(/getTax)public ResponseEntity calculateTax(RequestParam int income , RequestParam int months) {return ResponseEntity.ok().body(processTax.calculate(income, months));}}