Пакетные тесты пользовательского интерфейса в Xcode
Я хотел бы пакетные тесты пользовательского интерфейса (сейчас, я думаю, юнит-тесты были бы полезны когда-нибудь)
Похоже, что ни тесты пользовательского интерфейса XCode, ни "fastlane scan" не имеют никакой внутренней поддержки для этого на данный момент. Есть хороший и простой подход?
ситуация
Мне нужно протестировать определенный тест пользовательского интерфейса N раз.
Ситуация в реальном мире
Мне нужно протестировать определенный тест пользовательского интерфейса 100 раз и получить вывод в конце пакета:
- сколько итераций удалось / не удалось
- любые журналы неудачных итераций
Что я пробовал (и делаю сейчас)
В фастфайле, fastlane scan
может быть использован как это для пакетирования. Однако выходные файлы все попадают в отдельные каталоги, и это будет довольно (?) Работа, объединяющая все эти результаты. Это не как scan
возвращает логическое значение или что-либо, обозначающее статус успеха теста? (Также на самом деле сканирование, скорее всего, не поддерживает запуск определенного теста, он запускает их все)
100.times do |index|
puts "Running test iteration #{index}..."
scan(scheme: schemefortesting,
output_directory: "fastlane/tests/test_output_#{index}",
destination: 'name=Myrealworldiphonename'
)
end
1 ответ
Насколько я знаю, это не поддерживается. Я полагаю, что лучшим способом сделать это было бы создание метода для выполнения теста, а затем многократное его выполнение, отслеживание результатов в целом и запись в консоль. Что-то вроде:
func runTheTest() -> Bool {
app.launch()
// Run your test
let passing = // Make your asserts
return passing
}
func testManyTimes() {
var allTestsPassing = true
for n in 0...100 {
let thisLoopPassing = runTheTest()
print("Loop \(n) returned \(thisLoopPassing)")
allTestsPassing = allTestsPassing && thisLoopPassing
}
XCTAssertTrue(allTestsPassing)
}
Идея частично взята из Автоматического запуска тестового примера много раз в Xcode.