Object-Cユニットテスト&MOCK(抜粋精選)

4986 ワード


アサーションテストのタイプ:
次の18の断言(SDKでも18個、その意味はios UnitTest学習ノートから転じ、原文のブロガーに心から感心しています):
XCTFail(format...)は失敗したテストを生成します. 
XCTAssertNil(a1, format...)空判断、a 1が空の場合に通過し、逆に通過しない. 
XCTAssertNotNil(a 1,format...)は空判定ではなく、a 1が空でない場合に通過し、逆に通過しない.
XCTAssert(expression, format...)expressionがTRUEとして評価された場合に通過する. 
XCTAssertTrue(expression, format...)expressionがTRUEとして評価された場合に通過する. 
XCTAssertFalse(expression, format...)expression評価がFalseの場合に通過します. 
XCTAssertEqualObjects(a1, a2, format...)[a 1 isEqual:a 2]の値がTRUEの場合に通過し、そのうちの1つが空でない場合に通過しない.
XCTAssertNotEqualObjects(a1, a2, format...)判断は等しくなく、[a 1 isEqual:a 2]値がFalseの場合に通過する.
XCTAssertEqual(a1, a2, format...)判定が等しい(a 1とa 2がC言語のスカラー、構造体または連合体である場合に使用し、実際のテストでNSStringを発見してもよい). 
XCTAssertNotEqual(a1, a2, format...)判断は等しくない(a 1とa 2がC言語のスカラー、構造体または連合体である場合に使用される).
XCTAssertEqualWithAccuracy(a1, a2, accuracy, format...)等しいと判断し、(doubleまたはfloatタイプ)誤差範囲を提供し、誤差範囲(+/-accuracy)以内で等しい場合にテストに合格する. 
XCTAssertNotEqualWithAccuracy(a1, a2, accuracy, format...) 判断が等しくない、(doubleまたはfloatタイプ)誤差範囲を提供し、誤差範囲内で等しくない場合にテストに合格する. 
XCTAssertThrows(expression, format...)異常テスト、expressionに異常が発生した場合に合格する.逆に通らない.(変態)X CTAssertThrowsSpecific(expression,specificException,format...)異常テストは、expressionでspecificException異常が発生した場合に通過します.逆に他の異常が発生したり、異常が発生しなかったりしても通過しません. 
XCTAssertThrowsSpecificNamed(expression, specificException, exception_name, format...)異常テストは、expressionで具体的な異常、具体的な異常名の異常が発生した場合にテストに合格し、逆に合格しない. 
XCTAssertNoThrow(expression,format...)異常テスト、expressionに異常が発生していない場合テストに合格する;
XCTAssertNoThrowSpecific(expression, specificException, format...)異常テストは、expressionに具体的な異常、具体的な異常名の異常が発生していない場合にテストに合格し、逆に合格しない. 
XCTAssertNoThrowSpecificNamed(expression, specificException, exception_name, format...)異常テストは、expressionで特定の異常、特定の異常名の異常が発生していない場合にテストに合格し、逆に合格しません.
 
特に、XCTAssertEqualObjectsおよびXCTAssertEqualに注意してください.
XCTAssertEqualObjects(a1, a2, format...)の判断条件は[a 1 isEqual:a 2]がYESを返すか否かである.
XCTAssertEqual(a1, a2, format...)の判断条件は、a 1==a 2がYESを返すか否かである.
後者の場合、a 1とa 2がともに基本データ型変数である場合、YESはa 1==a 2のみが返される.たとえば、次のコードの2行目だけがテストに合格できます.
// 1.   



XCTAssertEqual(1, 2, @"a1 = a2 shoud be true"); //    

XCTAssertEqual(1, 1, @"a1 = a2 shoud be true"); //   

a 1とa 2がポインタである場合、a 1とa 2が同じオブジェクトを指している場合にのみYESが返されます.
// NSArray   



NSArray *array1 = @[@1];  

NSArray *array2 = @[@1];  

NSArray *array3 = array1;  

XCTAssertEqual(array1, array2, @"a1 and a2 should point to the same object"); //    

XCTAssertEqual(array1, array3, @"a1 and a2 should point to the same object"); //    

OCMock
OCMockはiOSまたはMac OS XプロジェクトのMockテストを構成するためのオープンソースプロジェクトであり、iOSプロジェクトがターゲットであれば静的ライブラリが生成され、Mac OS Xプロジェクトであればフレームワークが生成される.実装思想は、mockするオブジェクトのclassに基づいて対応するオブジェクトを作成し、そのオブジェクトの属性と所定のメソッドを呼び出した後の動作(例えば、値を返し、コードブロックを呼び出し、メッセージを送信するなど)を設定し、それを配列に記録し、次に開発者が自らメソッドを呼び出し、最後にverify(検証)を行い、メソッドが呼び出されたかどうかを判断することである.または呼び出し中に異常が投げ出されたかどうかなど.
iOSプロジェクトにOCMockスタティックライブラリを追加する前に、OCMockの資料アドレスを指定します.
OCMock公式サイト
iOS Project Setup:iOSプロジェクトでOCMockを構成するチュートリアル
erikdoe / ocmock:GitHubのサンプルアイテムで、以下の構成パラメータを参照できます.
OCMock Download:OCMockの静的ライブラリ、フレームワーク、およびエンジニアリングファイル(ここではOCMockのソースコード実装を参照できます)のダウンロードアドレスは、dmg形式にパッケージされています.