作为iOS开发者,测试是你的必修课:让我教教你iOS系统如何做测试(3)

发表于:2016-11-09来源:简述作者:庸者的救赎点击数: 标签:
postForLoginAction (response: String) - String { if response. contains ( Failure ) { return Failure ! } else { return Success ! }} 这个时候我们可以在 Unit Test 里面写一个 Test Method 来做
postForLoginAction(response: String) -> String { if response.contains("Failure") { return "Failure !" } else { return "Success !" } }

这个时候我们可以在Unit Test里面写一个Test Method来做个事情,去验证返回结果的正确性

func testNumberOfVowelsInString_shouldReturnNumberOfVowels() {
    let viewController = ViewController()
    let string = "Failure"
    let results = viewController.postForLoginAction(response: "xxx")
    XCTAssertEqual(string, results, "登录失败,返回结果: \(results)")
}

这里使用了XCTest框架里面的一个断言函数XCTAssertEqual(_:_:message:),他是用来检测两个表达式是否相等,最后一个参数是在不等的情况下会log的信息;

在写测试的时候会有很多类似XCTAssertEqual的方法被调用到,下面列举一些常用的:

  • XCTAssertTrue(\_:\_:file:line:): 判断结果是否为真
  • XCTAssertFalse(\_:\_:file:line:):判断结果是否为假
  • XCTAssertEqual(\_:\_:\_:file:line:): 判断两个表达式是否相等
  • XCTAssertNotEqual(\_:\_:\_:file:line:): 判断不相等
  • XCTAssertNil(\_:\_:file:line:): 判断结果是否为nil
  • XCTAssertNotNil(\_:\_:file:line:): 判断是否为非nil

有兴趣的同学可以进入XCTest里面查找一下,有很多个,而且命名方式都非常的语义化,还是比较容易理解的

Unit Tests的运行方法和UI Tests有些区别,Unit Tests并没有自动记录功能,所有只能Command + U来进行测试

当然,Unit Tests也可以进行单条测试,方法同UI Tests一样,点击右侧的小按钮即可

OK,看到这里,有没有觉得可以解放自己的一部分劳动力了,很多需要来回点击输入看log的重复性工作被解放了

Cool????...

有木有?

Conclusions(啰嗦)

通过上面的简单示例,你已经知道如何测试了,那么在写测试代码的时候,请尽量遵循以下几条:

  • 测试方法一定要以test作为开头前缀
  • 最好是一个模块开一个Test Case,毕竟业务是分离的
  • 如果你已经做好的使用测试框架,那么就认真实践TDD(Test - Driver Development)
  • 尽量使用单条测试,因为Command + U会执行你所有的测试

测试代码是必要的,可能很多同学都会在各类博客看过或听说过TDD(Test - Driver Development),测试驱动开发在一定程度上可以保证代码的质量,同时保证交付的效果如预期.

当然辣,现实是,很多开发同学不写测试代码,楼主曾经见过不但不写测试,连手动测试都不做的开发者,甚是可怕;而且,超自信,当bug出现的时候,信誓旦旦的说:一定是后台的问题,我的代码是不会有bug的????

原文转自:http://www.jianshu.com/p/2143182b9948