iOS開發那些事--編寫OCUnit測試方法-邏輯測試方法
應用測試和邏輯測試
新增OCUnit到工程時候,我們提到過,應用測試(Application Testing)和邏輯測試(Logic Testing)兩個概念,它們並非是OCUnit中的概念,而是單元測試中概念。應用測試是對整個應用程式進行的測試,設計測試用例時候要考慮到執行環境等因素,例如在測試JavaEE時候需要考慮Web容器和EJB容器等環境問題。而邏輯測試則是輕量級的,只測試某個業務邏輯物件的方法或演算法正確性。
編寫OCUnit測試方法
每一個單元測試用例對應於測試類中的一個方法,因此測試類分為:邏輯測試類和應用測試類,在設計測試用例時候,邏輯測試和應用測試也是不同的。編寫OCUnit測試方法也是要分邏輯測試和應用測試。下面我們還是通過計算個人所得稅應用介紹,它們的編寫過程,被測試類ViewController編寫過程不再介紹。
1、邏輯測試方法
邏輯測試應該測試計算個人所得稅的業務邏輯,即測試ViewController類中的calculate:方法
LogicTest.h的程式碼如下: [cpp] view plaincopy
#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 如果表示式丟擲異常,則斷言失敗;
相關文章
- 軟體測試戰略_測試那些事
- 測開---編寫測試工具有什麼好的方法論嗎
- 軟體測試那些事
- 測試筆試邏輯思維題筆試
- 測試方法
- Golang 單元測試 - 邏輯層Golang
- iOS 開發-單元測試iOS
- 【轉】測試用例編寫(功能測試框架)框架
- 介面測試方法
- Web測試方法Web
- JUnit測試方法
- Golang 編寫測試教程Golang
- iOS打測試包與分發測試iOS
- 軟體測試的底層邏輯
- 邏輯注入漏洞滲透測試檢測辦法
- kernel wifi 測試方法WiFi
- Kafka效能測試方法Kafka
- 軟體測試方法
- Junit 4 測試方法
- 介面測試用例編寫和測試關注點
- ios12 測試版更新方法iOS
- iOS10 beta測試版升級方法iOS
- 單元測試如何測試私有方法_1
- MYSQL 效能測試方法 - 基準測試(benchmarking)MySql
- 測試工程師必備:掌握這5種設計方法快速編寫測試用例~思路分析工程師
- 不經常用到但又非常重要的測試用例編寫方法——測試大綱法詳解
- [iOS單元測試系列]單元測試編碼規範iOS
- 開發測試
- go test 測試用例那些事(二) mockGoMock
- Python和單元測試那些事兒Python
- 如何編寫優秀的測試程式碼|單元測試
- 使用測試優先方法開發使用者介面
- Hadoop測試常見問題和測試方法Hadoop
- 軟體安全測試有哪些方法?在哪裡測試?
- 軟體效能測試有哪些測試指標?效能測試報告怎麼編寫?指標測試報告
- web測試方法總結Web
- 軟體測試的方法
- nginx壓力測試方法:Nginx