應用測試和邏輯測試
添加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