Soru Xcode UI Test örneği


Yakın zamanda öğrendim Xcode'ta Birim Test. Şimdi Xcode 7'yi deniyorum ve yeni bir proje oluşturduğumda UI Testleri için yeni bir grup olduğunu görüyorum.

enter image description here

İzledim WWDC 2015 videosu ve oldukça iyiydi, ama kendimden geçebileceğim süper basit bir örneğiniz var mı? Video örnekleri benim için biraz fazla karmaşıktı.

notlar


17
2017-07-24 01:33


Menşei




Cevaplar:


kullanım Birim Testleri sınıflarınızdaki yöntemlerin geçerliliğini sınamak için. Yazdığınız kodu test etmek için kullanıyorsunuz. (Görmek diğer örneğim Xcode'ta basit bir Birim Testi kurmak için.)

kullanım UI Testleri Kullanıcı Arayüzünün geçerliliğini kontrol etmek. Kendi robotunuzun geçmesi ve normal bir kullanıcının yapabileceği uygulamanızla yaptığınız normal etkileşimlerin tümünü yapmak gibi düşünün. Bu, kendiniz yapmanın zamanını size kazandırır.

Bu yazı yazıldığı zaman, UI bileşenlerinin özelliklerinin birçoğuna erişmek zordur, ancak sadece bir testin onlara dokunarak gitmesi ve onları kaydırarak onları orada olduklarını teyit eder.

Örnek

Bu, düşünebildiğim en basit kurulum ve UI testi ile ilgilidir: basıldığında bir etiketin metnini değiştiren bir düğme.

Kurmak

  • İOS 9.0+ için Xcode 7+ sürümünde yeni bir proje oluşturun.
  • UI Testlerini Dahil Et'in işaretli olduğundan emin olun.

enter image description here

  • Xcode 7'den önce oluşturulan bir projeye UI testleri ekliyorsanız, bkz. bu cevap. (Dosya> Yeni> Hedef> Test> Kakao Dokunmatik UI Test Paketi)

  • Ekle UILabel ve bir UIButton film şeridine

enter image description here

  • Bir @IBOutlet ve @IBAction oluşturun. ViewController ve yapmak label metin değiştiğinde button basılır.

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

Testi yap

  • Senin projenUITest'ler dosyası.

enter image description here

  • Lanetini testExample() yöntem. (Yorumları silebilirsiniz)

enter image description here

  • Kırmızı Kayıt düğmesine basın

enter image description here

  • Uygulamada, (1) etikete dokunun, (2) düğmeye dokunun ve ardından (3) etikete tekrar dokunun. (4) Kaydı durdurmak için tekrar Kaydet düğmesine basın. Aşağıdaki kod sizin için otomatik olarak oluşturulmalıdır:

    func testExample() {
    
        let app = XCUIApplication()
        app.staticTexts["Label"].tap()
        app.buttons["Button"].tap()
        app.staticTexts["Hello"].tap()
    }
    
  • Kullan staticText bir başlangıç ​​yapmak için başlangıç ​​noktası olarak XCTAssert. Şimdi sahip olmalısınız:

    func testExample() {
    
        let app = XCUIApplication()
        XCTAssert(app.staticTexts["Label"].exists)
        app.buttons["Button"].tap()
        XCTAssert(app.staticTexts["Hello"].exists)
    }
    
  • UI Testini çalıştırmak için soldaki pırlantaya basın. Geçtiğinde yeşile dönmelidir.

enter image description here

  • Bu kadar! Bu gösterdi ki UIButton ve UILabel Var ve etiketin metni değişti. Görmek istiyorsanız başarısız (iyi bir fikir), "Merhaba" u başka bir şeye dönüştürebilirsiniz.

İlerideki çalışma


46
2017-07-24 01:33



Değişen etiketin olduğundan emin olmak nasıl mümkün olabilir? Düğme "Hello" olarak değiştirilen bir düğme ise, test de geçer. Bir seçenek, etiketin ve butonun mevcut olduğunu kontrol etmektir, ancak bu genel değildir. Etiketi "Hello" yerine boş dizgiye değiştirmek istiyorsak ne olur? app.staticTexts[""].exists neredeyse her zaman doğrudur. - Kalicz
Neden "Hello" gibi kodlanmış metin yerine elemanları tanımlamak için accessibilityIdentifer için gidemiyoruz. Metin, gelecekte değişse de, bu her zaman yardımcı olur. - Sravan
Eminim muhtemelen daha iyi olur. Yukarıdaki cevap, diğer basit örneklerin yokluğunda UI Testi'ni anlamaya çalışırken yaptığım bir şeydi. Bu soruya cevabımı geliştiren başka bir cevap eklemek için çekinmeyin. - Suragch
Teşekkür ederim! Zamanımı kurtardı. - Raja


@Suragch Cevap için +1. Gözlemlediğim ve UI Test durumu içindeki her işlevin "test" ile başlaması gerektiğini paylaşmak istediğim bir şey var. Bundan sonra fazladan isim ekleyebilirsiniz. Sadece bu şekilde buton (teste başlamak için tıklamak için) görüntülenir.


9
2017-11-16 10:00



Düzenleme veya yorum önerebilirsiniz. Ayrı bir cevap mantıklı. - Rohit KP