web-dev-qa-db-ja.com

Xcode UIテストの例

Xcodeの単体テスト について最近知りました。今、Xcode 7を試していますが、新しいプロジェクトを作成すると、UIテスト用の新しいグループがあります。

enter image description here

WWDC 2015ビデオ を見ましたが、それはかなり良かったのですが、自分で試してみることができる非常に簡単な例はありますか?ビデオの例は私には少し複雑すぎました。

18
Suragch

Unit Testsを使用して、クラス内のメソッドの有効性をテストします。それらを使用して、作成したコードをテストします。 (Xcodeで簡単な単体テストを設定するには、 他の例 を参照してください。)

UIテストを使用して、ユーザーインターフェイスの有効性を確認します。通常のユーザーが行うアプリとの通常のやり取りをすべて実行する独自のロボットを持っているようなものだと考えてください。これにより、自分で行う時間を節約できます。

この記事の執筆時点では、UIコンポーネントの多くのプロパティにアクセスすることは困難ですが、テストでそれらをタップしてスワイプするだけで、それらが存在することが確認されます。

これは、私が考えることができる最も単純なセットアップとUIテストについてです。押されたときにラベルのテキストを変更するボタン。

セットアップ

  • IOS 9.0以降のXcode 7以降で新しいプロジェクトを作成します。
  • [UIテストを含める]がオンになっていることを確認します

enter image description here

  • Xcode 7より前に作成されたプロジェクトにUIテストを追加する場合は、 this answer を参照してください。 (ファイル>新規>ターゲット>テスト> Cocoa Touch UIテストバンドル)

  • UILabelUIButtonをストーリーボードに追加します

enter image description here

  • ViewControllerに@IBOutletと@IBActionを作成し、labelが押されたときにbuttonテキストを変更します。

    _import UIKit
    class ViewController: UIViewController {
        @IBOutlet weak var label: UILabel!
        @IBAction func button(sender: AnyObject) {
            label.text = "Hello"
        }
    }
    _

テストをする

  • YourProjectUITestsファイルを開きます。

enter image description here

  • testExample()メソッドにカーソルを置きます。 (コメントを削除できます)

enter image description here

  • 赤い録音ボタンを押します

enter image description here

  • アプリで、(1)ラベルをタップし、(2)ボタンをタップしてから、(3)ラベルをもう一度タップします。 (4)録音を停止するには、録音ボタンをもう一度押します。次のコードが自動的に生成されるはずです。

    _func testExample() {
    
        let app = XCUIApplication()
        app.staticTexts["Label"].tap()
        app.buttons["Button"].tap()
        app.staticTexts["Hello"].tap()
    }
    _
  • staticTextを作成するための開始点としてXCTAssert行を使用します。今、あなたは持っているはずです:

    _func testExample() {
    
        let app = XCUIApplication()
        XCTAssert(app.staticTexts["Label"].exists)
        app.buttons["Button"].tap()
        XCTAssert(app.staticTexts["Hello"].exists)
    }
    _
  • 左側のひし形を押して、UIテストを実行します。通過すると緑色に変わります。

enter image description here

  • それでおしまい!これにより、UIButtonUILabelが存在し、ラベルのテキストが変更されたことがわかりました。失敗したい場合は(良い考え)、「Hello」を別のものに変更できます。

さらなる研究

46
Suragch

@ Suragch +1の答え。私が観察し、共有したいことの1つは、UIテストケース内のすべての関数が「test」で始まる必要があることです。その後に追加の名前を追加できます。この方法でのみ(クリックしてテストを開始するための)ボタンが表示されます。

7
Himanshu Garg