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”
图片来源
不断的循环。
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