XCTestを使ってみた
今までxcodeでtestを書いたことがなかったので、書いてみたいと思います。
xcode5から導入されたXCTestを使用してみます。
testって何とか、testって何で必要なのって方はこちらの記事が参考になります。 (予定がないのでiOSにおけるユニットテストについてまとめる その1)
今回はprojectを作成するとデフォルトで生成されるtestファイルにtestを書いていきたいと思います。
まず、その前にtestの対象となるclassを実装しましょう。
今回はCalculation.swiftというclassを作って、その中に引数が偶数かどうかを判定するisEven()メソッドと2つの引数の和を返すsum()メソッドを実装しました。
import UIKit class Calculation: NSObject { func isEven(dividedNumber: Int) -> Bool { if dividedNumber % 2 == 0 { return true } else { return false } } func sum(num1: Int, num2: Int) -> Int { return num1 + num2 } }
classを作れたら、testファイルがそのclassを参照できるようにShow the file inspectorのTarget Membershipのtestファイルのところにチェックを入れます
続いてtestを実装して行きましょう。
今回はデフォルトの[project名]Testsファイルを利用します。 [project名]Testsの中のtestExample()にisEven()メソッドのtestを書いてみました。 さらに新しくtestを追加してみたりしました。
func testExample() { // This is an example of a functional test case. // Use XCTAssert and related functions to verify your tests produce the correct results. XCTAssertTrue(Calculation().isEven(2), "偶数だとtrueが返ってきます") XCTAssertTrue(Calculation().isEven(4), "偶数だとtrueが返ってきます") } func testSum() { XCTAssertEqual(Calculation().sum(1, num2: 1), 2, "num1とnum2の和が返ってきます") }
testはcmd + u か下記の画像の様にShow the test navigatorから実行します。
testをコケさせてみます。
func testExample() { // This is an example of a functional test case. // Use XCTAssert and related functions to verify your tests produce the correct results. XCTAssertTrue(Calculation().isEven(2), "偶数だとtrueが返ってきます") XCTAssertTrue(Calculation().isEven(3), "偶数だとtrueが返ってきます") } func testSum() { XCTAssertEqual(Calculation().sum(1, num2: 1), 3, "num1とnum2の和が返ってきます") }
3は偶数ではありませんし、1+1=3ではありません。
testがコケるとこんな感じでエラーが出ます。
testを意識しながらコードを書くと関数を良い感じに分けて書けると思いました。