iOS APP iOS Test-Driven Development by Tutorials free section 学习笔记-the TDD Cycle 3

iOS APP iOS Test-Driven Development by Tutorials free section 学习笔记-the TDD Cycle 3

tags: TDD day

TDD Cycle

上一篇笔记,您了解了测试驱动的开发可以归结为一个简单的过程,称为TDD Cycle。它有四个步骤,通常被“color coded”,如下所示:
我们称它为“Red-Green-Refactor Cycle”

图片来源

  • 失败时,以 Red为颜色标记
  • 通过时,以 green 为颜色标记
  • 通过後进入 Refactor阶段

不断的循环。

Get start

延续上一个逻辑。当帐号正确时,输入匡下方的题型字串应该要隐藏。

当然我们要 conform TDD Cycle,我们继续吧~

Red : Write a failing test

  1. 首先,先是照着test nomenclaturn。
  2. 接着写下 given when then三个注解,帮助自己构思测试流程。
    func testLoginPageViewController_usernameValidUILabel_isHidden(){
        //given
        //when
        //then
    }
  1. 照着测试流程构思。

Given

在什麽特定条件下

    func testLoginPageViewController_usernameValidUILabel_isHidden(){
        //given
        let state:LoginState = .userNameCorrect
        //when
        //then
    }

When

谁在这个条件下

    func testLoginPageViewController_usernameValidUILabel_isHidden(){
        //given
        let state:LoginState = .userNameCorrect
        //when
        sut.loginState = state
        //then
    }

Then

预期要发生的结果

    func testLoginPageViewController_usernameValidUILabel_isHidden(){
        //given
        let state:LoginState = .userNameCorrect
        //when
        sut.loginState = state
        //then
        let isHidden = sut.loginPageView.usernameValidUILabel.isHidden
        XCTAssertEqual(isHidden, true)
    }

这是我写的第三个 TDD Cycle,建构这个 Cycle所花的时间不到三分钟,可以说明当习惯了制作Test,制作Test并不会花费太多的时间。

Command + U 测试看看吧

很好,已经顺利地做出一个 failing test。

Green : Make the test pass ˙

我在 LoginViewController 代理了 LoginView,并在状态改变时更改LoginView的配置。

Command + U 测试看看吧

顺利地 pass 这个 test。
已经可以开始 Refactor。

Refactor : 来重构这段程序码吧

这两段程序码有很明显的耦合,尝试把它拆开。

    func changepasswordValidUILabelIsHidden(loginState:LoginState) {
        
        if loginState == .bothCorrect || loginState == .userNameCorrect {
            
            loginPageView.usernameValidUILabel.isHidden = true
        }else{
            loginPageView.usernameValidUILabel.isHidden = false
        }
    }
    
    func changeUsernameValidUILabelIsHidden(loginState:LoginState) {
        if loginState == .bothCorrect || loginState == .passwordCorrect {
            loginPageView.passwordValidUILabel.isHidden = true
        }else{
            loginPageView.passwordValidUILabel.isHidden = false
        }
    }

Command + u

仍然pass 代表这次的 Refactor没有问题。

完成 TDD Cycle

这次完成 Cycle的速度快很多,只要熟练,TDD Cycle 不会造成太大的时间负担。

下一篇还会继续分享,下一个 TDD Cycle


<<:  参考监视器的非必需属性-高凝聚力(High cohesion)

>>:  HP D2600 Storage AUC正常但第一颗硬碟亮灯

1. STM32-STM32CubeIDE 安装/程序码补齐功能

STM32CubeIDE安装 首先可以到官网下载对应系统的安装档 STM32官网 选择对应系统下载後...

风险描述(risk descriptions)

根据ISO 31000,风险是“不确定性对目标的影响(effect of uncertainty o...

Day 13 - 基本语法8(函式2)

昨天我们学完了函式的基础用法以及讲解,今天要写的是进阶用法。 会这样分两天是因为我觉得有一点难,可以...

Day 8: jest-dom

Jest-Dom 以及接下来的主角React-Testing-Library 在做测试时,我们需要针...

Day01.从防疫特助到管道的故事谈Blue Prism

Blue Prism(蓝色棱镜),(後续也会穿插着简称BP)是属於RPA Robotic Proce...