请选择 进入手机版 | 继续访问电脑版

测试驱动开发(TDD)实战体验

[复制链接]
欣然自乐 发表于 2020-12-31 20:21:02 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
在上一篇文章中写了关于TDD的理论,感兴趣的小伙伴可以去阅读一下。本日这篇文章以一个简单的例子来体验一下TDD的过程。
情况



  • Java 8
  • Junit 5
需求

我们有这样子的一个需求:客户需要一个长方形,能够给长方形设置宽和高,而且能够计算面积
1.编写测试用例



  • 此时的Rectangle类如下
  1. class Rectangle {    private double width;    private double height;    public void setWidth(double width) {        this.width = width;    }    public void setHeight(double height) {        this.height = height;    }}
复制代码


  • 编写测试case
  1. public class RectangleTest {    @Test    void should_return_20_when_width_2_and_height_10() {        double width = 2;        double height = 10;        Rectangle rectangle = new Rectangle();        rectangle.setWidth(width);        rectangle.setHeight(height);        assert (rectangle.count(width, height) == 20);    }}
复制代码
2.运行测试用例

就会看到测试case运行失败了(因为你还没写功能代码)
3.编写业务代码

  1. class Rectangle {    private double width;    private double height;    public void setWidth(double width) {        this.width = width;    }    public void setHeight(double height) {        this.height = height;    }    public double count(double width, double height) {                 return width * height;    }}
复制代码
4.运行测试用例,然后看到测试用例通过了

5.对代码查缺补漏,举行重构



  • 增补测试用例
  1. public class RectangleTest {    @Test    void should_return_20_when_width_2_and_height_10() {        double width = 2;        double height = 10;        Rectangle rectangle = new Rectangle();        rectangle.setWidth(width);        rectangle.setHeight(height);        assert (rectangle.count(width, height) == 20);    }    @Test    void should_throw_exception_when_width_given_error_value() {        double width = -10;        double height = 10;        Rectangle rectangle = new Rectangle();        assertThrows(IllegalArgumentException.class, () -> rectangle.count(width, height));    }}
复制代码


  • 运行测试用例,发现失败了
  • 然后增补代码,此时的Rectangle类如下
[code]class Rectangle {    private double width;    private double height;    public void setWidth(double width) {        this.width = width;    }    public void setHeight(double height) {        this.height = height;    }    public double count(double width, double height) {        if (width
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )