日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2025/3/19 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS开发那些事--编写OCUnit测试方法-逻辑测试方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

應(yīng)用測試和邏輯測試

添加OCUnit到工程時(shí)候,我們提到過,應(yīng)用測試(Application Testing)和邏輯測試(Logic Testing)兩個(gè)概念,它們并非是OCUnit中的概念,而是單元測試中概念。應(yīng)用測試是對整個(gè)應(yīng)用程序進(jìn)行的測試,設(shè)計(jì)測試用例時(shí)候要考慮到運(yùn)行環(huán) 境等因素,例如在測試JavaEE時(shí)候需要考慮Web容器和EJB容器等環(huán)境問題。而邏輯測試則是輕量級的,只測試某個(gè)業(yè)務(wù)邏輯對象的方法或算法正確性。

編寫OCUnit測試方法

每一個(gè)單元測試用例對應(yīng)于測試類中的一個(gè)方法,因此測試類分為:邏輯測試類和應(yīng)用測試類,在設(shè)計(jì)測試用例時(shí)候,邏輯測試和應(yīng)用測試也是不同的。編寫 OCUnit測試方法也是要分邏輯測試和應(yīng)用測試。下面我們還是通過計(jì)算個(gè)人所得稅應(yīng)用介紹,它們的編寫過程,被測試類ViewController編寫 過程不再介紹。

1、邏輯測試方法

邏輯測試應(yīng)該測試計(jì)算個(gè)人所得稅的業(yè)務(wù)邏輯,即測試ViewController類中的calculate:方法

LogicTest.h的代碼如下:

?

  • #import?<SenTestingKit/SenTestingKit.h>?
  • ?
  • #import?“ViewController.h”?
  • ?
  • @interface?LogicTest?:?SenTestCase?
  • ?
  • @property?(nonatomic,strong)?ViewController?*viewController;?
  • ?
  • @end?
  • ?
  • 在h文件中定義viewController屬性,注意定義為屬性參數(shù)設(shè)置為strong。LogicTest.m的代碼如下:?
  • ?
  • #import?“LogicTest.h”?
  • ?
  • @implementation?LogicTest?
  • ?
  • -?(void)setUp?
  • ?
  • {?
  • ?
  • [super?setUp];?
  • ?
  • self.viewController?=?[[ViewController?alloc]?init];?
  • ?
  • }?
  • ?
  • -?(void)tearDown?
  • ?
  • {?
  • ?
  • self.viewController?=?nil;?
  • ?
  • [super?tearDown];?
  • ?
  • }?
  • ?
  • //測試月應(yīng)納稅額不超過1500元?用例1?
  • ?
  • -?(void)testCalculateLevel1?
  • ?
  • {?
  • ?
  • double?dbRevenue?=?5000;?
  • ?
  • NSString?*strRevenue?=?[NSString?stringWithFormat:@"%f",dbRevenue];?
  • ?
  • NSString*?strTax?=[self.viewController?calculate:strRevenue];?
  • ?
  • STAssertTrue([strTax?doubleValue]?==?45,?@”期望值是:45?實(shí)際值是:%@”,?strTax);?
  • ?
  • }?
  • ?
  • //測試月應(yīng)納稅額超過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?實(shí)際值是:%@”,?strTax);?
  • ?
  • }?
  • ?
  • //測試月應(yīng)納稅額超過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?實(shí)際值是:%@”,?strTax);?
  • ?
  • }?
  • ?
  • //測試月應(yīng)納稅額超過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?實(shí)際值是:%@”,?strTax);?
  • ?
  • }?
  • ?
  • //測試月應(yīng)納稅額超過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?實(shí)際值是:%@”,?strTax);?
  • ?
  • }?
  • ?
  • //測試月應(yīng)納稅額超過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?實(shí)際值是:%@”,?strTax);?
  • ?
  • }?
  • ?
  • //測試月應(yīng)納稅額超過80000元?用例7?
  • ?
  • -?(void)testCalculateLevel7?
  • ?
  • {?
  • ?
  • double?dbRevenue?=?103500;?
  • ?
  • NSString?*strRevenue?=?[NSString?stringWithFormat:@"%f",dbRevenue];?
  • ?
  • NSString*?strTax?=[self.viewController?calculate:strRevenue];?
  • ?
  • STAssertTrue([strTax?doubleValue]?==?31495,?@”期望值是:31495?實(shí)際值是:%@”,?strTax);?
  • ?
  • }?
  • ?
  • @end?
  • 在setUp方法中初始化viewController,在tearDown方法中釋放viewController屬性。測試方法 testCalculateLevel1~ testCalculateLevel7是對應(yīng)測試用例1~7,測試方法中STAssertTrue是OCUnit框架宏斷言,這些與斷言有關(guān)的宏。

    OCUnit框架斷言宏

    框架

    說明

    STAssertEqualObjects

    當(dāng)兩個(gè)對象不相等,或者是其中一個(gè)對象為nil時(shí)候斷言失敗;

    STAssertEquals

    當(dāng)參數(shù)1不等于參數(shù)2時(shí)候斷言失敗,用于C中基本數(shù)據(jù)測試;

    STAssertNil

    當(dāng)參數(shù)不是nil時(shí)候斷言失敗;

    STAssertNotNil

    當(dāng)參數(shù)是nil時(shí)候斷言失敗;

    STAssertTrue

    當(dāng)表達(dá)式為false時(shí)候斷言失敗;

    STAssertFalse

    當(dāng)表達(dá)式為ture時(shí)候斷言失敗;

    STAssertThrows

    如果表達(dá)式?jīng)]有拋出異常,則斷言失敗;

    STAssertNoThrow

    如果表達(dá)式拋出異常,則斷言失敗;

    總結(jié)

    以上是生活随笔為你收集整理的iOS开发那些事--编写OCUnit测试方法-逻辑测试方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。