你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發那些事--編寫OCUnit測試方法-邏輯測試方法

iOS開發那些事--編寫OCUnit測試方法-邏輯測試方法

編輯:IOS開發綜合
應用測試和邏輯測試   添加OCUnit到工程時候,我們提到過,應用測試(Application Testing)和邏輯測試(Logic Testing)兩個概念,它們並非是OCUnit中的概念,而是單元測試中概念。應用測試是對整個應用程序進行的測試,設計測試用例時候要考慮到運行環境等因素,例如在測試JavaEE時候需要考慮Web容器和EJB容器等環境問題。而邏輯測試則是輕量級的,只測試某個業務邏輯對象的方法或算法正確性。   編寫OCUnit測試方法   每一個單元測試用例對應於測試類中的一個方法,因此測試類分為:邏輯測試類和應用測試類,在設計測試用例時候,邏輯測試和應用測試也是不同的。編寫OCUnit測試方法也是要分邏輯測試和應用測試。下面我們還是通過計算個人所得稅應用介紹,它們的編寫過程,被測試類ViewController編寫過程不再介紹。   1、邏輯測試方法   邏輯測試應該測試計算個人所得稅的業務邏輯,即測試ViewController類中的calculate:方法   LogicTest.h的代碼如下:   [cpp]  #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     #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  如果表達式拋出異常,則斷言失敗;         
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved