Я запускаю несколько модульных тестов внутри Xcode с XCTests. Когда я их запускаю, все тесты либо проходят, либо не проходят, и отображается маленькая зеленая галочка или красный крестик. Основная проблема заключается в том, что мои тесты преждевременно отменяются и они не выполняются должным образом.
Вот дополнительная информация:
- Когда тесты запускаются, нет никакого вывода на консоль, чего не было раньше. Под этим я подразумеваю, что раньше у меня был ожидаемый вывод консоли, а теперь нет.
- Когда тесты запускаются, мне не требуется разблокировать мой iPhone, чтобы приложение могло работать. Более того, даже если мой iPhone разблокирован, он не запускает приложение, которое выполнялось бы раньше.
При выполнении моих тестов компиляция завершается, а затем очень быстро появляется сообщение «Отмена ...» на информационной панели в Xcode (верхняя центральная панель, отображающая предупреждения и «Сборка» при сборке проекта).
Я использую файл .xcworkspace (потому что я использую Pods)
- У меня есть одна схема сборки - это проект.
- У меня были те же проблемы, плюс проблемы с зелеными флажками и красными крестиками, которые не отображались в моих тестах после их запуска, а иногда мои тесты вообще не отображались на вкладке тестирования. Я исправил эти проблемы, удалив файл Podfile.lock, каталог Pods и каталог .xcworkspace, а затем запустив установку Pod. После этого у меня возникли те же проблемы, за исключением этих двух.
- Я пробовал запускать новые тесты в другой ветке, проблемы те же.
Прежде чем столкнуться с какой-либо из этих проблем, я просто писал тесты и пробовал разные методы написания тестов. Я отменил все эти изменения, но все еще получаю эти ошибки.
Я также обнаружил те же проблемы при запуске тестов без симулятора.
Когда я компилирую и запускаю приложение из Xcode, оно работает нормально.
Любые советы о том, как решить эту проблему, были бы замечательными! При необходимости запросите более подробную информацию.
Вот видео, на котором я провожу тесты. Я создал новый проект и новую цель модульного тестирования, чтобы показать, что происходит. Примечание. Там есть пустой тест и тест, который всегда должен проходить:
Как видите, проблема в том, что тесты не работают должным образом. Зеленый и красный кресты больше не отображаются, тест, который должен всегда проходить, не проходит, нет вывода на консоль, а в верхней панели информации почти сразу же написано «отмена ...». Было бы здорово посоветовать, почему происходит отмена!
Вот несколько скриншотов того, как настроен код:
Вот и код (это просто базовый код после создания нового модульного теста, за исключением того, что я добавил одно утверждение, которое всегда должно проходить):
import XCTest
@testable import example
class exampleTests: XCTestCase {
override func setUp() {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
XCTAssertTrue(true)
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}
Изменить:
Итак, согласно предложению @CPR, я снова попробовал это на симуляторе, и в основном все ошибки исчезли. Я попробовал еще раз на физическом устройстве, но ошибки не исчезли. Примечание. Я пробовал это раньше на симуляторе и получил те же ошибки. С тех пор я ничего не менял, поэтому я не уверен, почему это сработало сейчас. Вот вывод консоли после запуска тестов на сим-карте (не уверен, что это поможет, но я все равно добавлю его):
Test Suite 'All tests' started at 2018-12-06 03:59:53.045
Test Suite 'exampleTests.xctest' started at 2018-12-06 03:59:53.046
Test Suite 'exampleTests' started at 2018-12-06 03:59:53.046
Test Case '-[exampleTests.exampleTests testExample]' started.
Test Case '-[exampleTests.exampleTests testExample]' passed (0.001 seconds).
Test Case '-[exampleTests.exampleTests testPerformanceExample]' started.
/Users/akashkundu/Documents/example/exampleTests/exampleTests.swift:30: Test Case '-[exampleTests.exampleTests testPerformanceExample]' measured [Time, seconds] average: 0.000, relative standard deviation: 115.251%, values: [0.000004, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001], performanceMetricID:com.apple.XCTPerformanceMetric_WallClockTime, baselineName: "", baselineAverage: , maxPercentRegression: 10.000%, maxPercentRelativeStandardDeviation: 10.000%, maxRegression: 0.100, maxStandardDeviation: 0.100
Test Case '-[exampleTests.exampleTests testPerformanceExample]' passed (0.348 seconds).
Test Suite 'exampleTests' passed at 2018-12-06 03:59:53.396.
Executed 2 tests, with 0 failures (0 unexpected) in 0.348 (0.350) seconds
Test Suite 'exampleTests.xctest' passed at 2018-12-06 03:59:53.396.
Executed 2 tests, with 0 failures (0 unexpected) in 0.348 (0.350) seconds
Test Suite 'All tests' passed at 2018-12-06 03:59:53.397.
Executed 2 tests, with 0 failures (0 unexpected) in 0.348 (0.351) seconds
Может ли кто-нибудь пролить свет на то, почему выполнение тестов на физическом устройстве вызывает эти ошибки?
Изменить:
Вот сообщение об ошибке / журнале из вкладки «Сообщения» в Xcode, найденное @CPR:
Вот код ошибки / журнала в тексте:
example.app encountered an error (Failed to establish communication with the test runner. (Underlying error: Unable to connect to test manager on 8b441d96d063b3b6abf55b06115441d160e85e67. (Underlying error: kAMDMuxConnectError: Could not connect to the device.)))
-----------------------------------------------------------------------
Решение:
Благодаря @CPR решение состоит в том, чтобы просто перезагрузить устройство. Еще один усвоенный урок - это использовать вкладку «Сообщения» для просмотра журналов и ошибок, которая является самой правой вкладкой рядом с вкладкой «Точка останова».
Его полный ответ здесь.
@testable import <blah blah>
? Имеются ли ваши методы тестирования с префиксомtest
(например:func testMyWidgetString() { / / your test code }
- person Adrian   schedule 06.12.2018