しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

iPhoneアプリ自動テスト入門 ~ XCTest+Swiftの単体テストを調べてみた

XCTestとは

iPhone単体テスト用のフレームワークです。
Xcodeでプロジェクトを生成した時にデフォルトで生成されます。

XCTestの使い方

テストの場所

ナビゲーターを見ると、プロジェクト名+Testsというグループが作られている事が分かります。
テストはこの中のファイルに記述していきます。

f:id:llcc:20150628165937p:plain

テストの実行方法

デフォルトで作られるテストファイルは下のようになっています。
まずはこのテストを実行してみようと思います。

import UIKit
import XCTest

class MyTestTests: XCTestCase {
    
    override func setUp() {
        super.setUp()
        // Put setup code here. This method is called before the invocation of each test method in the class.
    }
    
    override func tearDown() {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
        super.tearDown()
    }
    
    func testExample() {
        // This is an example of a functional test case.
        XCTAssert(true, "Pass")
    }
    
    func testPerformanceExample() {
        // This is an example of a performance test case.
        self.measureBlock() {
            // Put the code you want to measure the time of here.
        }
    }
}

テストは下の画面で▶を押すことで実行されます。
cmd+uでも実行する事ができます。

f:id:llcc:20150628170223p:plain

テストを追加してみる

デフォルトで作られたテストファイルにテストを追加してみます。
テストの追加は下のようにtestから始まるメソッドを追加してAssertを追加すれば完了です。

func testFirst() {
    XCTAssertEqual(1, 1, "MyFirstTest")
}

ストファイルを追加する場合は下のようにTest Class Caseを選択します。
追加する際にimport Cocoaという行でエラーが出ているのですが、これはこの行を削除すれば問題なく動きます。
f:id:llcc:20150628170800p:plain

自分で作ったクラスに対するテストを書く

次は自分で作ったクラスのテストを書きます。
早速下のようなクラスを作ってみます。

class MyModel: NSObject {
    func method() -> String {
        return "String"
    }
}

テストで利用できるようにこのファイルの右カラムのMyTestTestsにチェックを入れます。

f:id:llcc:20150628172050p:plain

下のようなテストを書きます。

func testMethod() {
    XCTAssertEqual(MyModel().method(), "String", "methodがStringを返す事")
}

まとめ

今回はXCTestの簡単な使い方を調べてみました。
今後は実際に個人アプリにも導入していきたいと思います。