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

应用测试和逻辑测试

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

编写OCUnit测试方法

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

1、逻辑测试方法

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

LogicTest.h的代码如下:

 

  
  
  
  
  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. [super setUp]; 
  21.  
  22. self.viewController = [[ViewController alloc] init]; 
  23.  
  24.  
  25. - (void)tearDown 
  26.  
  27.  
  28. self.viewController = nil; 
  29.  
  30. [super tearDown]; 
  31.  
  32.  
  33. //测试月应纳税额不超过1500元 用例1 
  34.  
  35. - (void)testCalculateLevel1 
  36.  
  37.  
  38. double dbRevenue = 5000; 
  39.  
  40. NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue]; 
  41.  
  42. NSString* strTax =[self.viewController calculate:strRevenue]; 
  43.  
  44. STAssertTrue([strTax doubleValue] == 45, @”期望值是:45 实际值是:%@”, strTax); 
  45.  
  46.  
  47. //测试月应纳税额超过1500元至4500元 用例2 
  48.  
  49. - (void)testCalculateLevel2 
  50.  
  51.  
  52. double dbRevenue = 8000; 
  53.  
  54. NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue]; 
  55.  
  56. NSString* strTax =[self.viewController calculate:strRevenue]; 
  57.  
  58. STAssertTrue([strTax doubleValue] == 345, @”期望值是:345 实际值是:%@”, strTax); 
  59.  
  60.  
  61. //测试月应纳税额超过4500元至9000元 用例3 
  62.  
  63. - (void)testCalculateLevel3 
  64.  
  65.  
  66. double dbRevenue = 12500; 
  67.  
  68. NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue]; 
  69.  
  70. NSString* strTax =[self.viewController calculate:strRevenue]; 
  71.  
  72. STAssertTrue([strTax doubleValue] == 1245, @”期望值是:1245 实际值是:%@”, strTax); 
  73.  
  74.  
  75. //测试月应纳税额超过9000元至35000元 用例4 
  76.  
  77. - (void)testCalculateLevel4 
  78.  
  79.  
  80. double dbRevenue = 38500; 
  81.  
  82. NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue]; 
  83.  
  84. NSString* strTax =[self.viewController calculate:strRevenue]; 
  85.  
  86. STAssertTrue([strTax doubleValue] == 7745, @”期望值是:7745 实际值是:%@”, strTax); 
  87.  
  88.  
  89. //测试月应纳税额超过35000元至55000元 用例5 
  90.  
  91. - (void)testCalculateLevel5 
  92.  
  93.  
  94. double dbRevenue = 58500; 
  95.  
  96. NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue]; 
  97.  
  98. NSString* strTax =[self.viewController calculate:strRevenue]; 
  99.  
  100. STAssertTrue([strTax doubleValue] == 13745, @”期望值是:13745 实际值是:%@”, strTax); 
  101.  
  102.  
  103. //测试月应纳税额超过55000元至80000元 用例6 
  104.  
  105. - (void)testCalculateLevel6 
  106.  
  107.  
  108. double dbRevenue = 83500; 
  109.  
  110. NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue]; 
  111.  
  112. NSString* strTax =[self.viewController calculate:strRevenue]; 
  113.  
  114. STAssertTrue([strTax doubleValue] == 22495, @”期望值是:22495 实际值是:%@”, strTax); 
  115.  
  116.  
  117. //测试月应纳税额超过80000元 用例7 
  118.  
  119. - (void)testCalculateLevel7 
  120.  
  121.  
  122. double dbRevenue = 103500; 
  123.  
  124. NSString *strRevenue = [NSString stringWithFormat:@"%f",dbRevenue]; 
  125.  
  126. NSString* strTax =[self.viewController calculate:strRevenue]; 
  127.  
  128. STAssertTrue([strTax doubleValue] == 31495, @”期望值是:31495 实际值是:%@”, strTax); 
  129.  
  130.  
  131. @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测试,OCUnit,iOS测试框架)