Пример тестового примера Xcode

Недавно я узнал о Unit Testing в Xcode. Теперь я пробовал Xcode 7, и я вижу, что есть новая группа для тестов пользовательского интерфейса, когда я создаю новый проект.

введите описание изображения здесь

Я смотрел видео WWDC 2015, и это было очень хорошо, но есть ли у вас супер простой пример того, что я мог бы пройти сам? Примеры видео были для меня слишком сложными.

Примечания

Ответ 1

Используйте Тесты единиц, чтобы проверить правильность методов в ваших классах. Вы используете их для проверки кода, который вы написали. (См. мой другой пример для настройки простого Unit Test в Xcode.)

Используйте Тесты пользовательского интерфейса, чтобы проверить работоспособность пользовательского интерфейса. Подумайте об этом, как о том, чтобы ваш собственный робот прошел через все нормальные взаимодействия с вашим приложением, что обычный пользователь. Это экономит ваше время на то, чтобы сделать это самостоятельно.

На момент написания этой статьи трудно получить доступ ко многим свойствам компонентов пользовательского интерфейса, но просто пройти тест можно, нажав на них, и проверив их, подтверждает, что они есть.

Пример

Это про самый простой тест настройки и UI, о котором я мог думать: кнопка, которая при нажатии меняет текст метки.

Настройка

  • Создайте новый проект в Xcode 7+ для iOS 9.0 +.
  • Убедитесь, что включено тестирование пользовательских интерфейсов.

введите описание изображения здесь

  • Если вы добавляете тесты пользовательского интерфейса в проект, созданный до Xcode 7, см. этот ответ. (Файл > Создать > Целевой > Тест > Cocoa Пакет тестирования Touch UI Testing)

  • Добавить UILabel и a UIButton в раскадровку

введите описание изображения здесь

  • Создайте @IBOutlet и @IBAction в ViewController и измените текст label при нажатии button.

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

Проведите тест

  • Откройте файл YourProjectUITests.

введите описание изображения здесь

  • Поместите ваш курсор в метод testExample(). (Вы можете удалить комментарии)

введите описание изображения здесь

  • Нажмите красную кнопку записи

введите описание изображения здесь

  • В приложении (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)
    }
    
  • Нажмите алмаз слева, чтобы запустить тест пользовательского интерфейса. Он должен стать зеленым, когда он пройдет.

введите описание изображения здесь

  • Что это! Это показало, что существуют UIButton и UILabel и что текст ярлыка изменился. Если вы хотите, чтобы это не получилось (хорошая идея), вы можете изменить "Hello" на что-то еще.

Дальнейшее изучение

Ответ 2

@Suragch +1 для ответа. Одна вещь, которую я наблюдал и хочу поделиться тем, что каждая функция в тестовом примере UI должна начинаться с "теста". После этого вы можете добавить дополнительное имя. Только так появляется кнопка (для нажатия кнопки запуска теста).