2015-11-18 18 views
7

'da Access dizesini test etme Uygulama UI'sını test etmek için Xcode ve XCTest'te entegre edilmiş UI Test Case sınıfını kullanıyorum. Böyle bir şey test etmek istiyorum:Swift UI TextField

app = XCUIApplication() 
    let textField = app.textFields["Apple"] 
    textField.typeText("text_user_typed_in") 
    XCTAssertEqual(textField.text, "text_user_typed_in") 

Ben textField.value denedim! Dize metodu; İşe yaramıyor. Ayrıca, expectationForPredicate() ile yeni async yöntemini kullanmayı denedim ve bir zaman aşımıyla sonuçlanacak.

Bunu nasıl yapacağınıza dair bir fikriniz var mı? Veya bu tür bir doğrulama UI Testi ile mümkün değildir ve ben sadece kara kutu testleri yazabilir miyiz?

+0

Thx @Charles A. sorunun sorun olduğunu belirtmek için textField mevcut değil. Kafam karıştı çünkü typeText yöntemini çağırıyorum ve metnin textField'a girdiğini görebiliyorum. – leoluo

cevap

17

Bu kodu kullanmak ve iyi çalışıyor:

textField.typeText("value") 
XCTAssertEqual(textField.value as! String, "value") 

benzer bir şey yapıyoruz ve çalışmıyorsa, ben senin textField elemanı aslında var olduğundan emin olmak için kontrol ediyorum:

XCTAssertTrue(textField.exists, "Text field doesn't exist") 
textField.typeText("value") 
XCTAssertEqual(textField.value as! String, "value", "Text field value is not correct") 
+0

Evet haklısın. TextField mevcut değil. Ama ben bunu anlamıyorum: textField üzerinde typeText'i çağırıyorum ve metnin textField'a girdiğini görebiliyorum. – leoluo

+0

Bu konuda async yöntemini kullanmalı mıyım? – leoluo

+0

İlk metin "Apple" mı? Varsayılan davranış, muhtemelen alanın erişilebilirlik etiketinin içeriğidir, bu yüzden bir öğeyi denediğinizde ve çözdüğünüzde sorgu ikinci kez başarısız olur. –