iOS 单元测试

这篇具有很好参考价值的文章主要介绍了iOS 单元测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作用一名合格的程序员,得能文能武。写的了代码,也要写的了单元测试。

单元测试步骤
1.File -> New -> Target, 选择单元测试Target,创建成功
iOS 单元测试
如果项目是老项目,那需要手动创建一下UnitTest Target,如果项目里已经有了就忽略。
2.创建一个swift工具的测试类CalculatorTests
然后就可以在里面写单元测试用例了。
iOS 单元测试

 

单元测试常用知识点
环境变量的管理
setUp()测试开始前,初始化要使用的环境变量
tearDown()测试结束后,清理使用的环境变量
控制测试用例的执行顺序
1.可以通过test+101这种形式,顺序会根据test后面的数字,先小,后大的顺序进行执行
2.使用测试用例组的形式,执行顺序会按照组中的顺序,由上到下进行执行
静态变量allTests中放置排序后的测试用例
static var allTests = [
    testCase(CalculatorTests.testAddition),
    testCase(CalculatorTests.testSubtraction)
]

测试异步方法文章来源地址https://www.toymoban.com/news/detail-437475.html

使用XCTestExpectation测试异步方法
let expectation = XCTestExpectation(description: "HTTP request")
expectation.fulfill()
wait(for: [expectation], timeout: 5.0)
方法的性能测试
使用tmeasure(metrics: [XCTMetric], block: () -> Void)做性能测试
func measure(metrics: [XCTMetric], block: () -> Void)是 XCTest 中的一个方法,用于执行一段代码块并测量其执行时间。
参数 metrics 是一个 XCTMetric 类型的数组,用于指定要测量的指标。当前支持的指标包括:
wallClockTime:代码块执行的实际时间;
userTime:代码块执行期间 CPU 时间花费的量;
runTime:代码块执行期间系统运行时间的量。
执行 measure 方法会启动一个计时器,在代码块执行完成后停止计时器并记录测量的指标值。可以在测试报告中看到测量结果。
import XCTest
@testable import ARDemo

//创建CalculatorTests类,继承自XCTestCase
class CalculatorTests: XCTestCase {

    var calculator: Calculator!

    //测试开始前,初始化要使用的环境变量
    override func setUp() {
        super.setUp()
        calculator = Calculator()
    }

    //测试结束后,清理使用的环境变量
    override func tearDown() {
        super.tearDown()
        calculator = nil
    }

    //要控制测试用例的执行顺序
    //1.可以通过test+101这种形式,顺序会根据test后面的数字,先小,后大的顺序进行执行
    func test101Addition() {
        let result = calculator.add(2, 3)
        XCTAssertEqual(result, 5, "Addition of 2 and 3 should be 5")
    }

    func test102Addition() {
        let result = calculator.add(2, 3)
        XCTAssertEqual(result, 5, "Addition of 2 and 3 should be 5")
    }

    func test103Addition() {
        let result = calculator.add(2, 3)
        XCTAssertEqual(result, 5, "Addition of 2 and 3 should be 5")
    }

    //2.使用测试用例组的形式,执行顺序会按照组中的顺序,由上到下进行执行
    func testAddition() {
        let result = calculator.add(2, 3)
        XCTAssertEqual(result, 5, "Addition result is incorrect")
    }

    func testSubtraction() {
        let result = calculator.subtract(5, 2)
        XCTAssertEqual(result, 3, "Subtraction result is incorrect")
    }
    //静态变量allTests中放置排序后的测试用例
    static var allTests = [
        testCase(CalculatorTests.testAddition),
        testCase(CalculatorTests.testSubtraction)
    ]

    //测试异步方法
    func testAsyncHTTPRequest() {
        let expectation = XCTestExpectation(description: "HTTP request")
        
        // 调用异步HTTP请求方法
        asyncHTTPRequest { response in
            // 处理回调结果
            XCTAssertTrue(response.success)
            expectation.fulfill()
        }
        
        // 等待异步操作完成
        wait(for: [expectation], timeout: 5.0)
    }

    //测试功能的执行性能
    func testPerformance() {
        measure([.wallClockTime, .userTime]) {
            // 执行需要测试性能的代码块
        }
    }

}


class Calculator {
    func add(_ a: Int, _ b: Int) -> Int {
        return a + b
    }

    func subtract(_ a: Int, _ b: Int) -> Int {
        return a - b
    }
}
写完代码写一下单元测试还是挺有意义的,虽然面向测试编程虽然前期会影响一些进度,但会收获额外的东西
1.对自己的代码充满信心
2.直面测试的勇气
3.节省回归测试的时间
另外,在写单元测试用例的过程中,也会自己发现某些隐藏的Bug和不符合预期功能的方法,并调整不规范的代码设计。所以有条件的话还是要写一下单元测试。
而且后续也可以在单元测试用例量达到一定程度后,可以搭建自动化测试后台,进行定时执行单元测试,发放测试报告。
 
 

到了这里,关于iOS 单元测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 成为一个合格程序员所必备的三种常见LeetCode排序算法

    排序算法是一种通过特定的算法因式将一组或多组数据按照既定模式进行重新排序的方法。通过排序,我们可以得到一个新的序列,该序列遵循一定的规则并展现出一定的规律。经过排序处理后的数据可以更方便地进行筛选和计算,从而大大提高了计算效率。因此,掌握排序

    2024年01月17日
    浏览(50)
  • 程序员技能与成长:如何学习新的编程语言和代码规范与单元测试

    一名软件工程师的最大挑战就是使自己的技术栈跟得上技术的发展,而在这个技术飞速发展的时代,保证自己不被淘汰的唯一方法就是不断学习。 那么,程序员需要掌握多门编程语言吗?很多初学者都被这个问题所困扰。Google研究总监 Peter Norvig曾就这个问题给出自己的观点

    2024年04月10日
    浏览(47)
  • 作为一名普通的java程序员,我想和大家分享一下4年来的工作内容

    我是16届毕业生,我的第一份工作是做外包,第一年的时间里测试偏多,比如用Excel文档生成测试代码进行单元测试,也会写一些简单的增删改查,以及用shell处理数据,还有一些纯测试的工作,比如点页面啊截图。到了第二年,开发的工作也变得多了一些,但大部分还是增删

    2024年02月05日
    浏览(53)
  • 【12章 Java IO流】程序员必看 IO流 详解

    ❤爱在开头 ❤博客主页: 努力的小鳴人 ❤系列专栏: JavaSE超详总结😋 ❤欢迎小伙伴们, 点赞👍关注🔎收藏🍔 一起学习! ❤如有错误的地方,还请小伙伴们指正!🌹 🔥系列传送门 : JavaSE超详总结😋 【附章5计算机字符编码】多种字符编码集的说明【热榜】 【11章J

    2023年04月16日
    浏览(37)
  • 读程序员的README笔记07_测试(下)

    2.5.2.1. 首先应该关注代码中的高风险的区域 2.5.2.2. 那些低风险或被废弃的代码并不值得测试 3.2.1.1. 如果网络出现问题,那么测试也会失败 3.5.2.1. 使用常数种子的随机数生成器的测试将总是通过或总是失败 3.7.3.1. 注入式时间戳将让你使用模拟来精确控制测试中的时间流逝

    2024年02月05日
    浏览(51)
  • 读程序员的README笔记06_测试(上)

    4.2.3.1. 消除外部依赖性可以使单元测试快速而集中 4.5.3.1. 压力测试可暴露系统的负载能力究竟有多大,以及在过度负载下会发生什么状况 4.6.3.1. ISO认证审核委员会要求提供需求和相应的测试文件证据 5.2.1.1. 管理测试的setup和teardown 5.2.1.2. 管理测试执行和编排 5.2.1.2.1. 可

    2024年02月05日
    浏览(50)
  • 读程序员的制胜技笔记05_测试(上)

    3.5.3.1. 也是最容易编写的 3.5.3.2. 只测试单个代码单元:公共函数(public function) 3.5.3.3. 需要是公开的,因为测试应该检查外部可见的接口,而不是类的内部细节 3.5.3.4. 问题是即便它让你能够知晓单个单元是否正常工作,但是并不能保证所有单元能够正常协同工作 3.5.4.1. 测

    2024年02月05日
    浏览(46)
  • 读程序员的制胜技笔记06_测试(下)

    1.3.1.1. 假设18岁是你游戏用户的法定年龄 1.3.2.1. C# 1.3.2.1.1. 不需要测试公元1年1月1日到9999年12月31日之间所有可能的DateTime值(有360多万个) 1.3.2.1.2. 只需要测试7个不同的输入 1.3.2.1.3. 通过条件语句将输入范围进行分割的操作称为“边界条件”(boundary conditional) 1.3.2.1.3.1. 定

    2024年02月05日
    浏览(48)
  • 适合程序员的DB性能测试工具 JMeter

    背景 1、想要一款既要能压数到mysql,又要能压数到postGre,还要能压数到oracle的自动化工具 2、能够很容易编写insert sql(因为需要指定表和指定字段类型压数据),然后点击运行按钮后,就能直接运行;不要写应用代码,因为我比较懒 3、可以指定测试时间,或者TPS等执行时行

    2024年02月12日
    浏览(64)
  • 测试/开发程序员有8大好处,自我实现和自我超越......

    测试/开发程序员有8大好处 很早前网络就关于程序员种种不好的标签,比如“不修边幅,生活邋遢“,“无趣呆板,不浪漫“,“加班多“,“不疼爱女朋友“,“情商低”等,通通都是瞎扯,除了加班多,其他跟程序员行一点关系都没有。 当测试/开发程序员好处多多 1、相

    2024年02月03日
    浏览(82)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包