LoginSignup
31

More than 5 years have passed since last update.

SwiftでTestコード(on Xcode)

Posted at

関数やクラスのtestをやらなきゃなー思って...
とりあえず、やり方だけ覚えとこう(実際やるかはまた別のお話w

プロジェクト作成

TestSample というプロジェクトを作成します
作成時にこの2つにチェックを入れておきます
(チェックしてなくても後から足すこともできますが今回説明は割愛します。こちらを参考に...)
スクリーンショット 2017-05-17 17.57.23.png

プロジェクト設定

プロジェクト設定を少し変更します
Defines ModuleYESにします
スクリーンショット 2017-05-17 18.47.00.png

MainCode

メインのところにコードを書きます
今回は、簡単に新しいMySample.swiftファイルを作成して、クラスとaddメソッドを追加します

MySample.swift
import Foundation
import UIKit

open class MySample {

    public func add(a: Int, b: Int) -> Int {
        return a + b
    }

}

引数を足すだけの簡単な関数ですw

MySample.swiftの右側のチェックをつけておくことで、Test側でも参照できるようにしておきます
スクリーンショット 2017-05-17 19.23.08.png

TestCode

先ほど作ったaddメソッドをtestします
最初にチェックしておいたことで[プロジェクト名]Testフォルダができていると思います
[プロジェクト名]Test.swiftを開くとすでにコードが書いてあります
@testable import [プロジェクト名]で先ほどメインに書いたクラスを参照できます

[プロジェクト名]Test.swift
import XCTest
@testable import TestSample

class TestSampleTests: 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.
        // Use XCTAssert and related functions to verify your tests produce the correct results.

    }

    func testPerformanceExample() {
        // This is an example of a performance test case.
        self.measure {
            // Put the code you want to measure the time of here.
        }
    }
}   

testしたいメソッドの追加

testから始まるメソッドを追加します
testから始めるメソッド名にすることで、testと認識してくれます)

[プロジェクト名]Test.swift
import XCTest
@testable import TestSample

class TestSampleTests: XCTestCase {
    // 省略
    func testMySample() {
        let mySample = MySample()
        let add = mySample.add(a: 2, b: 3)
        // addメソッドの返り値が5であるかの判断
        XCTAssertEqual(add, 5)
    }
}

テストの実行

command + Uで実行できます
左から5番目の場所に表示されます
実行して成功したものには、緑のマークがつきます
実行して失敗したものには、赤のマークがつきます
スクリーンショット 2017-05-17 19.30.13.png

個別実行

testをメソッドごとに個別に実行したい場合、そのメソッドにマウスを合わせると実行マークに変わるので選択すると実行できます
スクリーンショット 2017-05-17 19.28.03.png

成功と失敗

先ほど書いたコードのXCTAssertEqualで成功か失敗かを判断します
なので、わざと失敗させてみたいと思います

[プロジェクト名]Test.swift
import XCTest
@testable import TestSample

class TestSampleTests: XCTestCase {
    // 省略
    func testMySample() {
        let mySample = MySample()
        let add = mySample.add(a: 2, b: 3)
        XCTAssertEqual(add, 4)
    }
}

2 + 34になるとしてみますw
スクリーンショット 2017-05-17 19.33.04.png
(もちろん失敗しますw)

XCTAssertの他のメソッドはこちらを参考に...)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31