• 单元测试基础


            开发和测试向来就是一对冤家,再加上产品再添一把火,不吵才是奇迹呢。所以一般我们开发的时候尽可能的减少一些小的失误,比如说获取的数值为空,判定条件不充分、当然还有面对测试人员测试时将软件暴力测试,出现一些网络解析数据的延迟有时也是无法避免的。可是这些确实是一些困扰。但是为了提高开发的效率,犯这些小错误也是在所难免。综合对比了一下,觉得还是效率的提高还是离不开自己程序的健壮性,提到健壮性那就得保证程序中的模块没有问题,那当然离不开单元测试的帮助了。

            单元测试是对程序中的小函数,类、或者是路径等等的直接检测,虽然不是必须,却在提高编程效率上有着很关键的作用。针对OC编程,一种面向对象的编程方式。通常测试的就是某个关键的方法(函数),或者是某个值的判定之类的。能进行单元测试的工程,耦合度上也不会很高,这样也对我们的代码的做了简化,减少了程序之间的耦合度,有助于开发高质量的代码,实现敏捷开发。

            在Xcode中有其自带的OCUnit测试框架,在我们创建工程的时候即可以选择,选择完,工程中就会多出两个以Tests结尾的文件,文件是该类继承自XCTestCase类,其中包含三个方法:setUp,tearDown和testExample。

            setUp方法是每个测试方法调用执行,用于在测试前设置好要测试的方法,tearDown是每个测试方法调用执行是在测试后将设置好的要测试的方法写在里面。testExample顾名思义就是一个示例和我们的自己创建的测试方法一样。不过测试方法必须testXXX的格式,且不能有参数,,不能有返回值,不然不会识别为测试方法。测试方法的执行顺序是字典序排序。按快捷键Command + U进行单元测试,这个快捷键是全部测试,点击之后所有的测试用例就会顺序执行。虽然测试用例在每一个工程中都会有不尽相同的写法,但是涉及到的断言却是一样的。针对测试类中的18的断言做了以下摘录,以备查用。

    XCTFail(...)

    任何尝试都会测试失败,...是输出的提示文字。(后面都是这样)

    XCTAssertNil(expression, ...)

    expression为空时通过,否则测试失败。

    expression接受id类型的参数。

     

    XCTAssertNotNil(expression, ...)

    expression不为空时通过,否则测试失败。

    expression接受id类型的参数。

     

    XCTAssert(expression, ...)

    expression为true时通过,否则测试失败。

    expression接受boolean类型的参数。

     

    XCTAssertTrue(expression, ...)

    expression为true时通过,否则测试失败。

    expression接受boolean类型的参数。

     

    XCTAssertFalse(expression, ...)

    expression为false时通过,否则测试失败。

    expression接受boolean类型的参数。

     

    XCTAssertEqualObjects(expression1, expression2, ...)

    expression1和expression1地址相同时通过,否则测试失败。

    expression接受id类型的参数。

     

    XCTAssertNotEqualObjects(expression1, expression2, ...)

    expression1和expression1地址不相同时通过,否则测试失败。

    expression接受id类型的参数。

     

    XCTAssertEqual(expression1, expression2, ...)

    expression1和expression1相等时通过,否则测试失败。

    expression接受基本类型的参数(数值、结构体之类的)。

     

    XCTAssertNotEqual(expression1, expression2, ...)

    expression1和expression1不相等时通过,否则测试失败。

    expression接受基本类型的参数。

     

    XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, ...)

    expression1和expression2之间的任何值都大于accuracy时,测试失败。

    expression1、expression2、accuracy都为基本类型。

     

    XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, ...) 

    expression1和expression2之间的任何值都小于等于accuracy时,测试失败。

    expression1、expression2、accuracy都为基本类型。

     

    XCTAssertGreaterThan(expression1, expression2, ...)

    expression1 <= expression2时,测试失败。

    expression为基本类型

     

     

    XCTAssertGreaterThanOrEqual(expression1, expression2, ...)

    expression1 < expression2时,测试失败。

    expression为基本类型

     

    XCTAssertLessThan(expression1, expression2, ...)

    expression1 >= expression2时,测试失败。

    expression为基本类型

     

    XCTAssertLessThanOrEqual(expression1, expression2, ...)

    expression1 > expression2时,测试失败。

    expression为基本类型

     

    XCTAssertThrows(expression, ...)

    expression没抛异常,测试失败。

    expression为一个表达式

     

    XCTAssertThrowsSpecific(expression, exception_class, ...)

    expression没抛指定类的异常,测试失败。

    expression为一个表达式

    exception_class为一个指定类

     

    XCTAssertThrowsSpecificNamed(expression, exception_class, exception_name, ...)

    expression没抛指定类、指定名字的异常,测试失败。

    expression为一个表达式

    exception_class为一个指定类

    exception_name为一个指定名字

     

    XCTAssertNoThrow(expression, ...)

    expression抛出异常时,测试失败。

    expression为一个表达式

     

    XCTAssertNoThrowSpecific(expression, exception_class, ...)

    expression抛出指定类的异常,测试失败。

    expression为一个表达式

     

    XCTAssertNoThrowSpecificNamed(expression, exception_class, exception_name, ...)

    expression抛出指定类、指定名字的异常,测试失败。

    expression为一个表达式

    exception_class为一个指定类

     
    exception_name为一个指定名字

    最后附文档一篇,以备修正

    https://developer.apple.com/legacy/library/documentation/DeveloperTools/Conceptual/UnitTesting/AB-Unit-Test_Result_Macro_Reference/result_macro_reference.html

  • 相关阅读:
    Jmeter(二十七) 从入门到精通 Jmeter Http协议录制脚本(详解教程)
    Jmeter(二十六) 从入门到精通 搭建开源论坛JForum(详解教程)
    [Erlang0003][OTP] Efficiency Guide User's Guide > Common Caveats
    [Erlang0008][OTP] 高效指南 表和数据库(ets mnesia)
    [Erlang0004][OTP] 高效指南 二进制的构造和匹配(1)
    [Erlang0002][OTP] Efficiency Guide User's Guide > The Eight Myths of Erlang Performance
    [Erlang0010][News]OTP 技术委员会 影响R16的决策 (OTP Technical Board Decisions affecting R16 翻译)
    [Erlang0007][OTP] 高效指南 函数
    [Erlang0005][OTP] 高效指南 二进制的构造和匹配(2)
    [Erlang0001][OTP] Efficiency Guide User's Guide>Introduction
  • 原文地址:https://www.cnblogs.com/windsSunShine/p/5736977.html
Copyright © 2020-2023  润新知