• xcode swift 单元测试 test


    XCTest是苹果官方的测试框架,是基于OCUnit的传统测试框架,测试编写起来非常简单。

    参考文档:iOS Unit Testing and UI Testing Tutorial | Kodeco, the new raywenderlich.com

    测试案例一

    创建一个单元测试

    1. func testExample() throws {
    2. let personID:String = "0123456789"
    3. let count = personID.count
    4. XCTAssert(count <= 10, "ID length error.")
    5. // This is an example of a functional test case.
    6. // Use XCTAssert and related functions to verify your tests produce the correct results.
    7. // Any test you write for XCTest can be annotated as throws and async.
    8. // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error.
    9. // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards.
    10. }

     

     常用的一些断言

    XCTAssertEqualObjects:当两个对象不相等或者是其中一个对象为nil时,断言失败。
    XCTAssertEquals:当参数1不等于参数2时断言失败,用于基本数据测试。
    XCTAssertNil:当参数不是nil时,断言失败。
    XCTAssertNotNil:当参数是nil时,断言失败。
    XCTAssertTrue:当表达式为false时,断言失败。
    XCTAssertFalse:当表达式为true时,断言失败。
    XCTAssertThrows:如果表达式没有抛出异常,则断言失败。
    XCTAssertNoThrow:如果表达式抛出异常,则断言失败
     

     测试案例二

    EmailUtil.swift

    1. import Foundation
    2. class EmailUtil {
    3. func validateEmail(email:String) -> Bool {
    4. //这里传入的参数,需要补充一下关于正则表达式的一些相关知识,学习链接放在文末。
    5. let pattern = "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"
    6. let matcher = RegexHelper(pattern: pattern)
    7. let result = matcher.match(input: email)
    8. if result {
    9. return true
    10. }else{
    11. return false
    12. }
    13. }
    14. }

    RegexHelper.swift

    1. import Foundation
    2. struct RegexHelper {
    3. let regex : NSRegularExpression?
    4. init(pattern:String) {
    5. do {
    6. regex = try NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.caseInsensitive)
    7. } catch {
    8. regex = nil
    9. }
    10. }
    11. func match(input:String) -> Bool {
    12. let matches = regex?.matches(in: input, options: NSRegularExpression.MatchingOptions.reportProgress, range: NSMakeRange(0, input.lengthOfBytes(using: String.Encoding.utf8)))
    13. if (matches != nil) {
    14. return matches!.count > 0
    15. }else{
    16. return false
    17. }
    18. }
    19. }

    创建测试案例 EmailTester

    1. import XCTest
    2. final class EmailTester: XCTestCase {
    3. func testEmail() throws {
    4. let emailUtil = EmailUtil()
    5. let result = emailUtil.validateEmail(email: "s1@163.")
    6. XCTAssert(result,"邮箱格式不正确")
    7. }
    8. }

    会报错:Cannot find xxxx in scope ,改一下Target Membership

    测试符合预期

     修改邮箱

    测试通过 

    使用XCTest框架进行性能测试

    1. func testPerformanceExample() throws {
    2. measure {
    3. for _ in 0...600 {
    4. let image = UIImage(named: "wind")
    5. print(image?.size)
    6. }
    7. }
    8. }

    UITesting界面测试

    参考

    swift 单元测试1 - 简书

    iPhone开发Swift基础06 单元测试和界面测试_乐事派的博客-CSDN博客_swift 单元测试

    官网

    Apple Developer Documentation

  • 相关阅读:
    【电力运维】浅谈电力通信与泛在电力物联网技术的应用与发展
    19、Python -- 关键字参数 与 参数默认值,参数收集 与 逆向参数收集
    1.1.4 基于Ubuntu的lamp
    CSS基础
    目录即服务如何帮助安全、高效地管理WiFi用户?
    kubernetes6 (ingress)
    Cadence Allegro 高亮功能的使用技巧图文教程
    计算机组成原理(谭志虎主编 )
    Excel基础2
    C++语言的由来与发展历程
  • 原文地址:https://blog.csdn.net/linzhiji/article/details/128116714