码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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

  • 相关阅读:
    面试题:GBDT每一轮是在拟合负梯度,那XGBoost每一轮又在拟合什么?
    TCP/IP网络江湖——数据链路层的协议与传承(数据链路层中篇:数据链路层的协议与帧)
    数据要素价值:在数字时代的血脉中流淌
    执行make menuconfig问题的解决
    【C++】继承
    Node.js的模块
    外汇骗局有哪些?如何挽回损失?
    K8S 二进制部署
    SpringCloud微服务(三)——Zookeeper服务注册中心
    MuseScore入门教程(二、添加基本音乐符号)
  • 原文地址:https://blog.csdn.net/linzhiji/article/details/128116714
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号