`

iOS开发那些事--编写OCUnit测试方法-逻辑测试方法

阅读更多

应用测试和逻辑测试

 

添加OCUnit到工程时候,我们提到过,应用测试(Application Testing)和逻辑测试(Logic Testing)两个概念,它们并非是OCUnit中的概念,而是单元测试中概念。应用测试是对整个应用程序进行的测试,设计测试用例时候要考虑到运行环 境等因素,例如在测试JavaEE时候需要考虑Web容器和EJB容器等环境问题。而逻辑测试则是轻量级的,只测试某个业务逻辑对象的方法或算法正确性。

 

编写OCUnit测试方法

 

每一个单元测试用例对应于测试类中的一个方法,因此测试类分为:逻辑测试类和应用测试类,在设计测试用例时候,逻辑测试和应用测试也是不同的。编写 OCUnit测试方法也是要分逻辑测试和应用测试。下面我们还是通过计算个人所得税应用介绍,它们的编写过程,被测试类ViewController编写 过程不再介绍。

 

1、逻辑测试方法

 

逻辑测试应该测试计算个人所得税的业务逻辑,即测试ViewController类中的calculate:方法

 

LogicTest.h的代码如下:

 

#import <SenTestingKit/SenTestingKit.h>

#import “ViewController.h”

@interface LogicTest : SenTestCase

@property (nonatomic,strong) ViewController *viewController;

@end

在h文件中定义viewController属性,注意定义为属性参数设置为strong。LogicTest.m的代码如下:

#import “LogicTest.h”

@implementation LogicTest

- (void)setUp

{

[super setUp];

self.viewController = [[ViewController alloc] init];

}

- (void)tearDown

{

self.viewController = nil;

[super tearDown];

}

//测试月应纳税额不超过1500元 用例1

- (void)testCalculateLevel1

{

double dbRevenue = 5000;

NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue];

NSString* strTax =[self.viewController calculate:strRevenue];

STAssertTrue([strTax doubleValue] == 45, @”期望值是:45 实际值是:%@”, strTax);

}

//测试月应纳税额超过1500元至4500元 用例2

- (void)testCalculateLevel2

{

double dbRevenue = 8000;

NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue];

NSString* strTax =[self.viewController calculate:strRevenue];

STAssertTrue([strTax doubleValue] == 345, @”期望值是:345 实际值是:%@”, strTax);

}

//测试月应纳税额超过4500元至9000元 用例3

- (void)testCalculateLevel3

{

double dbRevenue = 12500;

NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue];

NSString* strTax =[self.viewController calculate:strRevenue];

STAssertTrue([strTax doubleValue] == 1245, @”期望值是:1245 实际值是:%@”, strTax);

}

//测试月应纳税额超过9000元至35000元 用例4

- (void)testCalculateLevel4

{

double dbRevenue = 38500;

NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue];

NSString* strTax =[self.viewController calculate:strRevenue];

STAssertTrue([strTax doubleValue] == 7745, @”期望值是:7745 实际值是:%@”, strTax);

}

//测试月应纳税额超过35000元至55000元 用例5

- (void)testCalculateLevel5

{

double dbRevenue = 58500;

NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue];

NSString* strTax =[self.viewController calculate:strRevenue];

STAssertTrue([strTax doubleValue] == 13745, @”期望值是:13745 实际值是:%@”, strTax);

}

//测试月应纳税额超过55000元至80000元 用例6

- (void)testCalculateLevel6

{

double dbRevenue = 83500;

NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue];

NSString* strTax =[self.viewController calculate:strRevenue];

STAssertTrue([strTax doubleValue] == 22495, @”期望值是:22495 实际值是:%@”, strTax);

}

//测试月应纳税额超过80000元 用例7

- (void)testCalculateLevel7

{

double dbRevenue = 103500;

NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue];

NSString* strTax =[self.viewController calculate:strRevenue];

STAssertTrue([strTax doubleValue] == 31495, @”期望值是:31495 实际值是:%@”, strTax);

}

@end

 在setUp方法中初始化viewController,在tearDown方法中释放viewController属性。测试方法 testCalculateLevel1~ testCalculateLevel7是对应测试用例1~7,测试方法中STAssertTrue是OCUnit框架宏断言,这些与断言有关的宏。

 

OCUnit框架断言宏

 

框架

说明

STAssertEqualObjects

当两个对象不相等,或者是其中一个对象为nil时候断言失败;

STAssertEquals

当参数1不等于参数2时候断言失败,用于C中基本数据测试;

STAssertNil

当参数不是nil时候断言失败;

STAssertNotNil

当参数是nil时候断言失败;

STAssertTrue

当表达式为false时候断言失败;

STAssertFalse

当表达式为ture时候断言失败;

STAssertThrows

如果表达式没有抛出异常,则断言失败;

STAssertNoThrow

如果表达式抛出异常,则断言失败;
分享到:
评论

相关推荐

    iOS开发进阶篇-成为一个iOS开发高手

    Swift是iOS开发的主要语言,深入理解这些特性对于编写高效、可维护的代码至关重要。例如,泛型可以实现代码重用,协议与扩展则能实现灵活的设计模式,而闭包则常用于异步操作和回调函数。 其次,iOS应用架构设计也...

    iOS开发进阶篇-成为iOS开发高手-源码

    - Cocoa Touch是iOS应用开发的基础,包括UIKit、Core Animation等组件,用于创建用户界面和交互逻辑。 3. **ARC(Automatic Reference Counting)**: - 在Objective-C中,了解并熟练运用ARC能有效管理内存,防止...

    UI第一章:无限互联iOS开发教程课件-- iPhone开发入门

    - **Xcode**:作为官方推荐的开发工具,Xcode集成了编译器、调试器、模拟器等功能于一体,为开发者提供了从编写代码到测试、调试的一站式解决方案。 - **Swift或Objective-C**:这两种编程语言是iOS开发的主要语言。...

    OCUnit单元测试学习

    OCUnit是Objective-C编程语言中的一种单元测试框架,它是Xcode集成开发环境(IDE)的一部分,特别是在iOS 7及更高版本中成为标准的测试工具。OCUnit源于SUnit,是Smalltalk语言中的一个单元测试框架。在iOS和macOS的...

    文章 iOS 开发入门 - 快速编写一个验证密码弹框动态库 dylib 项目附件

    6. **测试与调试**:为了确保dylib正常工作,创建一个简单的iOS应用项目,调用`showPasswordAlertWithValidator:`方法并测试验证功能。在Xcode中设置断点,可以方便地进行调试和优化。 在这个过程中,你将学习到...

    ios开发 AES-128-ECB加密

    之前遇到的需求,ios上没有类似的实现。搞了好久在网上搜了很多资料都不能解决最后找到了一个c/c++的底层源码,才实现了最后整理了下上传了。是个ios的demo很详细你定能看懂的。运行在xcode环境下,关键算法的文件是...

    IOS开发斯坦福--卡牌游戏源码

    在iOS开发领域,斯坦福大学的课程以其权威性和深度闻名,尤其对于初学者而言,它提供了深入了解Apple平台开发的宝贵资源。"白胡子老爷爷"是学生们对教授的亲切称呼,他的课程通常深入浅出,易于理解。在这个“IOS...

    iOS开发进阶-完整版

    根据提供的信息,我们可以推断出这是一本关于iOS开发进阶的书籍,作者为唐巧。虽然提供的部分内容似乎并不是实际的章节内容,但从标题、描述和标签中,我们可以推测本书可能涵盖的一些关键知识点。 ### iOS开发进阶...

    基于测试驱动的iOS开发

    OCUnit的设计目标是让测试编写者能够快速编写并运行测试,确保应用的各个组件和功能符合预期。 除了OCUnit外,文档还提到了GHUnit测试框架。GHUnit是第三方开发的单元测试框架,它在OCUnit的基础上提供了更多的功能...

    iOS测试指南---高清版.pdf

    根据上述知识点,一个合格的iOS测试工程师应熟悉iOS平台的特性、测试流程、测试工具的使用以及各种测试方法。此外,测试人员还应不断学习和适应行业变化,因为随着技术的发展,测试工具和技术也会不断更新。

    iOS语音开发libopencore-amrwb和libopencore-amrnb最新适用库

    iOS语音开发libopencore-amrwb和libopencore-amrnb最新适用库,该版本支持x86_64、i386、armv7、armv7s、arm64cpu架构 使用方法:拖入项目 方便自己下载,想用各位老铁也下吧

    iOS 仿抖音 Object-C

    《iOS 仿抖音 Object-C》是一个基于Objective-C语言编写的抖音仿制项目,旨在通过手写简化版Spring框架的方式,帮助读者深入了解iOS开发中关键原理。通过摘取整体框架中的核心逻辑,并简化代码实现过程,保留核心...

    FFmpeg-iOS-build-script-master.zip

    "FFmpeg-iOS-build-script-master.zip" 提供的正是一个专为iOS平台定制的FFmpeg编译脚本。 这个压缩包中的核心是“FFmpeg-iOS-build-script-master”文件夹,里面包含了编译FFmpeg到iOS平台所需的全部配置和脚本。...

    基于IOS平台(object-c)的游戏五子棋程序设计

    在iOS平台上,Object-C是一种广泛使用的编程语言,尤其在开发游戏应用时,它的重要性不言而喻。基于Object-C的游戏五子棋程序设计涉及到多个关键...同时,良好的文档编写习惯和测试策略也将提升开发效率和产品质量。

    iOS真机支持包---14.5.zip(14.5.1也可以使用)

    在iOS应用开发过程中,Xcode是苹果官方提供的集成开发环境(IDE),用于编写、调试和发布iOS及macOS应用程序。本篇文章将详细讲解与“iOS真机支持包---14.5.zip”相关的知识点,包括iOS真机测试、Xcode的版本兼容性...

    思科 cisco ios 镜像 C3640-JK.BIN

    思科 cisco ios 镜像 C3640-JK.BIN 文件由多位CCIE水平人员测试使用后拷贝,dy下可用

    iPhone开发入门到精通视频教程

    资源名称:iPhone开发入门到精通视频教程资源目录:【】iOS开发源码系列---工具【】iOS开发源码系列---应用【】iOS开发源码系列---游戏【】iOS开发源码系列---类库与框架【】iOS开发真机测试与发布【】iOS开发视频...

    IOS应用源码Demo-获取全球当前所有时区的当前时间TestTimeZone-毕设学习.zip

    1. **iOS应用开发**:iOS应用通常使用Swift或Objective-C语言编写,开发者需要熟悉Xcode集成开发环境(IDE)以及Apple的iOS SDK。 2. **多时区时间处理**:应用的核心在于获取并显示全球所有时区的时间。这涉及到对...

    思科 cisco ios 镜像 C3640-IK.BIN

    思科 cisco ios 镜像 C3640-IK.BIN 文件由多位CCIE水平人员测试使用后拷贝,dy下可用.

Global site tag (gtag.js) - Google Analytics