Ответ 1
Проверьте, активна ли "Сбор данных об охвате" в тестовой схеме.
У меня есть несколько тестов, написанных с использованием классов 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
Проверьте, активна ли "Сбор данных об охвате" в тестовой схеме.
Это происходит, если у вас есть только цель тестирования UI. Добавьте цель Unit Test. А затем снова запустите тесты. На этот раз вы увидите охват кода.
UITestcase не предоставляет данные о покрытии без кода модульного тестирования. Вы можете попробовать это. У вас есть кнопка в вашем Viewcontroller, присоедините к ней IBAction. И создайте UITestcase. Проверьте покрытие кода с помощью UITestcases и без него. Вы увидите разницу. Разница даст вам покрытие кода с помощью UITestcase. На данный момент Xcode не предоставляет данные о покрытии кода отдельно. Он зависит от тестовых модулей устройства.
Тестирование покрытия без тестовой системы пользовательского интерфейса
--- С кодом Я прокомментировал ваш
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, и результат был таким
И с вашим UITestcase это выглядит следующим образом
В настоящее время довольно очевидно, что UITestcase добавляет в тестовый блок для покрытия кода.