iOS APP iOS Test-Driven Development by Tutorials free secti

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

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

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


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章