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


应用测试和逻辑测试

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

编写OCUnit测试方法

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

1、逻辑测试方法

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

LogicTest.h的代码如下:

[cpp] view plain copy
  1. #import <SenTestingKit/SenTestingKit.h>  
  2.   
  3. #import “ViewController.h”  
  4.   
  5. @interface LogicTest : SenTestCase  
  6.   
  7. @property (nonatomic,strong) ViewController *viewController;  
  8.   
  9. @end  
  10.   
  11. 在h文件中定义viewController属性,注意定义为属性参数设置为strong。LogicTest.m的代码如下:  
  12.   
  13. #import “LogicTest.h”  
  14.   
  15. @implementation LogicTest  
  16.   
  17. - (void)setUp  
  18.   
  19. {  
  20.   
  21. [super setUp];  
  22.   
  23. self.viewController = [[ViewController alloc] init];  
  24.   
  25. }  
  26.   
  27. - (void)tearDown  
  28.   
  29. {  
  30.   
  31. self.viewController = nil;  
  32.   
  33. [super tearDown];  
  34.   
  35. }  
  36.   
  37. //测试月应纳税额不超过1500元 用例1  
  38.   
  39. - (void)testCalculateLevel1  
  40.   
  41. {  
  42.   
  43. double dbRevenue = 5000;  
  44.   
  45. NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue];  
  46.   
  47. NSString* strTax =[self.viewController calculate:strRevenue];  
  48.   
  49. STAssertTrue([strTax doubleValue] == 45, @”期望值是:45 实际值是:%@”, strTax);  
  50.   
  51. }  
  52.   
  53. //测试月应纳税额超过1500元至4500元 用例2  
  54.   
  55. - (void)testCalculateLevel2  
  56.   
  57. {  
  58.   
  59. double dbRevenue = 8000;  
  60.   
  61. NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue];  
  62.   
  63. NSString* strTax =[self.viewController calculate:strRevenue];  
  64.   
  65. STAssertTrue([strTax doubleValue] == 345, @”期望值是:345 实际值是:%@”, strTax);  
  66.   
  67. }  
  68.   
  69. //测试月应纳税额超过4500元至9000元 用例3  
  70.   
  71. - (void)testCalculateLevel3  
  72.   
  73. {  
  74.   
  75. double dbRevenue = 12500;  
  76.   
  77. NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue];  
  78.   
  79. NSString* strTax =[self.viewController calculate:strRevenue];  
  80.   
  81. STAssertTrue([strTax doubleValue] == 1245, @”期望值是:1245 实际值是:%@”, strTax);  
  82.   
  83. }  
  84.   
  85. //测试月应纳税额超过9000元至35000元 用例4  
  86.   
  87. - (void)testCalculateLevel4  
  88.   
  89. {  
  90.   
  91. double dbRevenue = 38500;  
  92.   
  93. NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue];  
  94.   
  95. NSString* strTax =[self.viewController calculate:strRevenue];  
  96.   
  97. STAssertTrue([strTax doubleValue] == 7745, @”期望值是:7745 实际值是:%@”, strTax);  
  98.   
  99. }  
  100.   
  101. //测试月应纳税额超过35000元至55000元 用例5  
  102.   
  103. - (void)testCalculateLevel5  
  104.   
  105. {  
  106.   
  107. double dbRevenue = 58500;  
  108.   
  109. NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue];  
  110.   
  111. NSString* strTax =[self.viewController calculate:strRevenue];  
  112.   
  113. STAssertTrue([strTax doubleValue] == 13745, @”期望值是:13745 实际值是:%@”, strTax);  
  114.   
  115. }  
  116.   
  117. //测试月应纳税额超过55000元至80000元 用例6  
  118.   
  119. - (void)testCalculateLevel6  
  120.   
  121. {  
  122.   
  123. double dbRevenue = 83500;  
  124.   
  125. NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue];  
  126.   
  127. NSString* strTax =[self.viewController calculate:strRevenue];  
  128.   
  129. STAssertTrue([strTax doubleValue] == 22495, @”期望值是:22495 实际值是:%@”, strTax);  
  130.   
  131. }  
  132.   
  133. //测试月应纳税额超过80000元 用例7  
  134.   
  135. - (void)testCalculateLevel7  
  136.   
  137. {  
  138.   
  139. double dbRevenue = 103500;  
  140.   
  141. NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue];  
  142.   
  143. NSString* strTax =[self.viewController calculate:strRevenue];  
  144.   
  145. STAssertTrue([strTax doubleValue] == 31495, @”期望值是:31495 实际值是:%@”, strTax);  
  146.   
  147. }  
  148.   
  149. @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开发那些事--编写OCUnit测试方法-逻辑测试方法)