iOS开发那些事--编写OCUnit测试方法-应用测试方法


应用测试方法

应用测试是测试应用程序的一些功能,这个功能具体到点击一个按钮触发一个事件,因此它主要是测试表示层。我们看看视图控制器ViewController.m中有那些方法需要测试,然后再来设计测试用例。

[cpp] view plain copy
  1. @implementation ViewController  
  2.   
  3. - (void)viewDidLoad  
  4.   
  5. {  
  6.   
  7. [super viewDidLoad];  
  8.   
  9. }  
  10.   
  11. - (void)didReceiveMemoryWarning  
  12.   
  13. {  
  14.   
  15. [super didReceiveMemoryWarning];  
  16.   
  17. }  
  18.   
  19. - (IBAction)onClick:(id)sender {  
  20.   
  21. //关闭键盘  
  22.   
  23. [self.txtRevenue resignFirstResponder];  
  24.   
  25. self.lblTax.text =[self calculate:self.txtRevenue.text];  
  26.   
  27. }  
  28.   
  29. //计算个人所得税  
  30.   
  31. -(NSString*) calculate:(NSString*)revenue {  
  32.   
  33. … …  
  34.   
  35. }  
  36.   
  37. @end  


viewDidLoad和didReceiveMemoryWarning是否需要测试,要看我们是否这个方法中有一些自己编写的代码,就目前而言我们不需要测试它们。onClick:是响应用户点击计算按钮的方法,它需要测试。calculate:方法是业务逻辑方法,我们在逻辑测试中测试过了,是否需要再测试呢?一般情况下应该只在逻辑测试就可以了,但是如果该方法需要外部环境(依赖其它类或需要特殊运行环境等),逻辑测试无法提供则需要应用测试,这是应用测试能够在设备上运行,它能够提供一个实际的、真实的测试环境。

下面我们实现onClick:方法的应用测试,我们要模拟点击按钮事件处理,它的输入条件通过文本框控件输入的,输出结果是通过标签控件展示的。设计测试用例选取常见值和边界值作为输入值,文本框的键盘限制为数字键盘。

输入验证不需要考虑太多,只需要考虑空情况,我们设计了6个用例。

onClick:方法应用测试用例

测试用例

输入条件

月收入总额(元)

输出结果

月应纳个人所得税税额(元)

说明

1

空白 0.00 测试不输入直接点击计算按钮

2

8000 345.00 测试整数

3

8000.59 345.12 测试小数

4

08000.59 345.12 测试有前导0数据

5

40000.50.56 8195.15 测试输入两个小数点

6

40000.50..56 8195.15 测试连在一起两个小数点

我们看看应用测试类AppllicationTest.h代码:

[cpp] view plain copy
  1. #import <SenTestingKit/SenTestingKit.h>  
  2.   
  3. #import “AppDelegate.h”  
  4.   
  5. #import “ViewController.h”  
  6.   
  7. @interface AppllicationTest : SenTestCase  
  8.   
  9. @property (nonatomic, strong) ViewController *viewController;  
  10.   
  11.    
  12.   
  13. @end  
  14.   
  15. 应用测试类AppllicationTest.m中的setUp和tearDown方法代码:  
  16.   
  17. - (void)setUp  
  18.   
  19. {  
  20.   
  21. [super setUp];  
  22.   
  23. AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];  
  24.   
  25. UIWindow *window = [appDelegate window];  
  26.   
  27. UINavigationController *navController = (UINavigationController*)window.rootViewController;  
  28.   
  29. self.viewController  = (ViewController*)navController.topViewController;  
  30.   
  31. }  
  32.   
  33. - (void)tearDown  
  34.   
  35. {  
  36.   
  37. self.viewController = nil;  
  38.   
  39. [super tearDown];  
  40.   
  41. }  


我们在setUp方法中需要初始化viewController属性,viewController代表的是一个视图控制器,它是iOS系统通过故事板文件创建,而不能简单的通过下面的语句实例化:

self.viewController  = [[ViewController alloc] init];

我们可以通过应用程序委托对象AppDelegate获得window对象,每个window对象可以使用属性rootViewController取得它的一个根视图控制器,本例中的根视图控制器是UINavigationController,而不是ViewController,所以我们还需要使用UINavigationController的topViewController属性取得ViewController对象。

应用测试类AppllicationTest.m中的测试方法代码:

[cpp] view plain copy
  1. //测试不输入直接点击计算按钮  
  2.   
  3. - (void)testOnClickInputBlank  
  4.   
  5. {  
  6.   
  7. STAssertNotNil(self.viewController, @”ViewController没有赋值。”);  
  8.   
  9. //设定输入值  
  10.   
  11. self.viewController.txtRevenue.text = @”";  
  12.   
  13. //调用oncClick测试  
  14.   
  15. [self.viewController onClick:nil];  
  16.   
  17. //取得输出结果  
  18.   
  19. NSString* strTax = self.viewController.lblTax.text;  
  20.   
  21. //断言  
  22.   
  23. STAssertEqualObjects(strTax, @”0.00″, @”期望值是:0.00 实际值是:%@”, strTax);  
  24.   
  25. }  
  26.   
  27. //测试整数  
  28.   
  29. - (void)testOnClickInputIntegerNumber  
  30.   
  31. {  
  32.   
  33. STAssertNotNil(self.viewController, @”ViewController没有赋值。”);  
  34.   
  35. //设定输入值  
  36.   
  37. self.viewController.txtRevenue.text = @”8000″;  
  38.   
  39. //调用oncClick测试  
  40.   
  41. [self.viewController onClick:nil];  
  42.   
  43. //取得输出结果  
  44.   
  45. NSString* strTax = self.viewController.lblTax.text;  
  46.   
  47. //断言  
  48.   
  49. STAssertEqualObjects(strTax, @”345.00″, @”期望值是:345.00 实际值是:%@”, strTax);  
  50.   
  51. }  
  52.   
  53. //测试小数  
  54.   
  55. - (void)testOnClickInputOneDot  
  56.   
  57. {  
  58.   
  59. STAssertNotNil(self.viewController, @”ViewController没有赋值。”);  
  60.   
  61. //设定输入值  
  62.   
  63. self.viewController.txtRevenue.text = @”8000.59″;  
  64.   
  65. //调用oncClick测试  
  66.   
  67. [self.viewController onClick:nil];  
  68.   
  69. //取得输出结果  
  70.   
  71. NSString* strTax = self.viewController.lblTax.text;  
  72.   
  73. //断言  
  74.   
  75. STAssertEqualObjects(strTax, @”345.12″, @”期望值是:345.12 实际值是:%@”, strTax);  
  76.   
  77. }  
  78.   
  79. //测试输入两个小数点  
  80.   
  81. - (void)testOnClickInputTwoDot  
  82.   
  83. {  
  84.   
  85. STAssertNotNil(self.viewController, @”ViewController没有赋值。”);  
  86.   
  87. //设定输入值  
  88.   
  89. self.viewController.txtRevenue.text = @”40000.50.56″;  
  90.   
  91. //调用oncClick测试  
  92.   
  93. [self.viewController onClick:nil];  
  94.   
  95. //取得输出结果  
  96.   
  97. NSString* strTax = self.viewController.lblTax.text;  
  98.   
  99. //断言  
  100.   
  101. STAssertEqualObjects(strTax, @”8195.15″, @”期望值是:8195.15 实际值是:%@”, strTax);  
  102.   
  103. }  
  104.   
  105. //测试有前导0数据  
  106.   
  107. - (void)testOnClickInputPrefixZero  
  108.   
  109. {  
  110.   
  111. STAssertNotNil(self.viewController, @”ViewController没有赋值。”);  
  112.   
  113. //设定输入值  
  114.   
  115. self.viewController.txtRevenue.text = @”08000.59″;  
  116.   
  117. //调用oncClick测试  
  118.   
  119. [self.viewController onClick:nil];  
  120.   
  121. //取得输出结果  
  122.   
  123. NSString* strTax = self.viewController.lblTax.text;  
  124.   
  125. //断言  
  126.   
  127. STAssertEqualObjects(strTax, @”345.12″, @”期望值是:345.12 实际值是:%@”, strTax);  
  128.   
  129. }  
  130.   
  131. //测试连在一起两个小数点  
  132.   
  133. - (void)testOnClickInputLinkDot  
  134.   
  135. {  
  136.   
  137. STAssertNotNil(self.viewController, @”ViewController没有赋值。”);  
  138.   
  139. //设定输入值  
  140.   
  141. self.viewController.txtRevenue.text = @”40000.50..56″;  
  142.   
  143. //调用oncClick测试  
  144.   
  145. [self.viewController onClick:nil];  
  146.   
  147. //取得输出结果  
  148.   
  149. NSString* strTax = self.viewController.lblTax.text;  
  150.   
  151. //断言  
  152.   
  153. STAssertEqualObjects(strTax, @”8195.15″, @”期望值是:8195.15 实际值是:%@”, strTax);  
  154.   
  155. }  


这些测试方法都是非常类似的,首先需要使用STAssertNotNil宏判断一下self.viewController是否为nil,然后self.viewController.txtRevenue.text设置文本框值,真正运行的时候我们是通过文本框控件输入的。语句[self.viewController onClick:nil]是测试核心目的,参数是按钮对象指针onClick:中没有使用,传递nil就可以了。输出结果的取得是从lblTax标签控件中取得的。最后使用STAssertEqualObjects宏断言。

你可能感兴趣的:(iOS开发那些事--编写OCUnit测试方法-应用测试方法)