Подтвердить что ты не робот

Тест-тест пользовательского интерфейса не показывает охват кода

У меня есть несколько тестов, написанных с использованием классов XCTestCase, и я хочу рассчитать покрытие кода. Для регулярного теста он хорошо отображается в моем боте, но для UI Tests всегда 0%.

Простейший тест:

import XCTest

class FAQUITests: XCTestCase {

    let app = XCUIApplication()        
    override func setUp() {
        super.setUp()
        app.launch()
    }

    func openFaqView() {
        app.navigationBars["NavigationBar"].buttons["FAQ"].tap()
    }

    func testFaq() {
        openFaqView()
        app.tables.cells.elementBoundByIndex(0).tap()
    }        

}

И это наверняка должно показать некоторое покрытие, но это не так. Я включил мой бот-код:

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

И результат:

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

Еще 0%.

Xcode 7.2 (7C68)

EDIT: Пример проекта: https://[email protected]/Kettu/so_34718699.git

4b9b3361

Ответ 1

Проверьте, активна ли "Сбор данных об охвате" в тестовой схеме.

Check Gather coverage data

Ответ 2

Это происходит, если у вас есть только цель тестирования UI. Добавьте цель Unit Test. А затем снова запустите тесты. На этот раз вы увидите охват кода. Примеры целей

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

UITestcase не предоставляет данные о покрытии без кода модульного тестирования. Вы можете попробовать это. У вас есть кнопка в вашем Viewcontroller, присоедините к ней IBAction. И создайте UITestcase. Проверьте покрытие кода с помощью UITestcases и без него. Вы увидите разницу. Разница даст вам покрытие кода с помощью UITestcase. На данный момент Xcode не предоставляет данные о покрытии кода отдельно. Он зависит от тестовых модулей устройства.

Тестирование покрытия без тестовой системы пользовательского интерфейса с тестом UI

--- С кодом Я прокомментировал ваш

func testStepper() {

    let steppersQuery = app.steppers
    steppersQuery.buttons["Increment"].tap()
    steppersQuery.buttons["Decrement"].tap()
}

func testSegmented() {
    app.buttons["Second"].tap()
    app.buttons["Fourth"].tap()
    app.buttons["Third"].tap()
    app.buttons["First"].tap()

}

из TestDemoUITests, и результат был таким без кода UITesting

И с вашим UITestcase это выглядит следующим образом с UITestcase

В настоящее время довольно очевидно, что UITestcase добавляет в тестовый блок для покрытия кода.