`

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测试实践

    ### iOS测试实践知识点详解 #### 一、软件测试与iOS测试概述 **1.1 什么是软件测试** 软件测试是确保软件产品质量的关键步骤之一。...希望读者通过学习能够全面掌握iOS测试的技术和方法,提高软件产品质量。

    IOS应用源码之alect-Digital-Egg-Drop-a1b6091.zip

    8. **测试和调试**:XCTest或OCUnit是iOS的单元测试框架,源码中可能包含测试用例,以确保应用功能的正确性。 通过以上分析,我们可以学习到iOS应用的开发流程、设计模式、编程实践,以及如何将物理知识融入到移动...

    iphone混合object-C++自动测试框架

    标题中的“iPhone混合Object-C++自动测试框架”指的是在iOS应用开发中,使用Objective-C(Apple的编程语言)和C++(一种通用编程语言)相结合的方式构建自动化测试框架。这样的框架能够利用两种语言的优势,例如...

    iOS游戏应用源代码——uffe-iDonkeyDeception-c6fabc7.zip

    XCTest或OCUnit可以用来编写单元测试,验证游戏逻辑的正确性。 9. **Configurations**: 项目可能包含不同的构建配置,如Debug和Release,它们分别对应开发和发布环境,可能有不同的设置如优化级别、符号表等。 10....

    【Creating New Expressive Social Mediums on the iPhone】[PDF] [iPhone/iPad/iOS]

    - **代码文档化**:单元测试本身就是一种代码文档,它们展示了方法的预期用途,有助于新开发者理解代码结构和逻辑。 - **促进良好设计**:易于测试的代码往往具有更好的结构,避免了“意大利面条式”代码,促进了...

    CallBlockObjectTest Demo代码

    使用XCTest或OCUnit等测试框架,编写单元测试来检查Block的执行逻辑。 总之,"CallBlockObjectTest" Demo旨在帮助开发者掌握Block在iOS开发中的运用,通过实例展示如何定义、传递和执行Block,以及如何与对象交互、...

    iOSUnitTest单元测试

    在iOS开发中,Xcode提供了内置的测试框架,如OCUnit(在Xcode 4.x中)以及后续引入的UI Tests,它们使得单元测试变得更为便捷。在创建新项目时,可以选择包含单元测试和UI测试。项目生成后,Xcode会在项目结构中自动...

    xcode调试包.zip

    3. 单元测试:Xcode支持JUnit和OCUnit测试框架,编写单元测试可以验证代码模块的功能,提高软件质量。 总结,Xcode不仅提供了丰富的调试工具,还支持多种调试方式,使开发者能够高效地解决问题,优化代码。无论你是...

Global site tag (gtag.js) - Google Analytics