iOS开发那些事--编写OCUnit测试方法-逻辑测试方法
来源:互联网 发布:销售公司数据流程图 编辑:程序博客网 时间:2024/06/05 20:05
应用测试和逻辑测试
添加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技术顾问”博客,请务必保留此出处http://2009315319.blog.51cto.com/701759/1123200
- iOS开发那些事--编写OCUnit测试方法-逻辑测试方法
- iOS开发那些事--编写OCUnit测试方法-逻辑测试方法
- iOS开发那些事--编写OCUnit测试方法-逻辑测试方法
- iOS开发那些事--编写OCUnit测试方法-应用测试方法
- iOS开发那些事--编写OCUnit测试方法-应用测试方法
- iOS开发那些事--编写OCUnit测试方法-应用测试方法
- iOS开发那些事--OCUnit测试框架
- iOS开发那些事--OCUnit测试框架
- 使用OCUnit写单元测试---逻辑测试
- OCUnit异步测试
- iOS推送测试方法
- 编写测试执行最好方法
- Java测试方法编写注意
- 编写测试类与方法
- 测试用例编写方法
- 白盒测试方法--逻辑覆盖法
- 白盒测试方法(覆盖逻辑)
- 白盒测试的逻辑覆盖方法
- 四次挥手
- iOS开发那些事--编写OCUnit测试方法-应用测试方法
- 使用JdbcTemplate 向ORACLE插入大文本CLOB数据的方法
- iOS下的unit test——OCUnit
- ZenGl中文字体渲染解决方案。
- iOS开发那些事--编写OCUnit测试方法-逻辑测试方法
- zoj2397 Tian Ji -- The Horse Racing 贪心
- 如何使用<Beginning ASP.NET 3.5 in C# and VB>书中的示例代码
- Dedecms 5.7sp1文章模型栏目接口使用手册
- javaEE Tomcat server.xml详解
- JAVA虚拟机内存模型
- android 直接在activity/broadcast receiver中启动子线程来处理长时间的耗时任务不行吗?
- leetcode第一刷_Sudoku Solver
- MFC中由左键单击模拟左键双击引起的问题