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

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

 



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农老关【关东升】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值