XCTests отменяется преждевременно - PullRequest
0 голосов
/ 06 декабря 2018

Я запускаю несколько модульных тестов внутри XCode с XCTests.Когда я их запускаю, все тесты либо проходят, либо не проходят и показывают маленький зеленый флажок или красный крестик. Основная проблема заключается в том, что мои тесты преждевременно отменяются, и они не выполняются должным образом.

Вот еще некоторая информация:

  1. Когда тесты запущены, консольный вывод не выводится, чего раньше не было.Под этим я подразумеваю, что раньше у меня был ожидаемый вывод на консоль, а теперь нет.
  2. Когда тесты запускаются, мне не требуется разблокировать iPhone, чтобы приложение могло работать.Более того, даже если мой iPhone разблокирован, он не запускает приложение, которое он делал бы раньше.
  3. При запуске моих тестов он завершает компиляцию и затем очень быстро говорит «Отмена ...»в информационной панели в Xcode (верхняя и центрированная строка, которая показывает предупреждения и «Building» при сборке вашего проекта).

  4. Я использую файл .xcworkspace (потому что я используюPods)

  5. У меня есть одна схема сборки, которая является проектом.
  6. У меня были те же проблемы, а также проблемы с зелеными галочками и красными крестиками, которые не появлялись в моих тестах послеи иногда мои тесты вообще не отображаются на вкладке «Тестирование».Я исправил эти проблемы, удалив файл Podfile.lock, каталог Pods и каталог .xcworkspace, а затем запустив Pod install.После этого у меня были те же проблемы, за исключением этих двух проблем.
  7. Я пытался запустить новые тесты в другой ветке, те же проблемы.
  8. Перед тем, как столкнуться с любой из этих проблемЯ просто писал тесты и пробовал разные методы написания тестов.Я отменил все эти изменения и все еще получаю эти ошибки.

  9. Я также обнаружил те же проблемы при запуске тестов без симулятора.

  10. Когда я компилирую и запускаю приложение из Xcode, оно работает нормально.

Любой совет, как решить эту проблему, был бы великолепен!Пожалуйста, попросите более подробную информацию, если это необходимо.

Вот видео, где я выполняю свои тесты.Я настроил новый проект и новую цель модульного тестирования, чтобы показать, что происходит. Примечание: Там есть пустой тест и тест, который должен всегда проходить:

enter image description here

Как видите, проблемаЭто тесты не работают должным образом.Зеленый и красный крестики больше не отображаются, тест, который должен проходить всегда, терпит неудачу, нет вывода на консоль, а в верхней информационной панели он говорит «отмена ...» почти сразу. Любой совет о том, почему происходит это отмена, был бы великолепен!

Вот несколько скриншотов того, как настроен код:

enter image description here enter image description here

Вот и этот код (это просто основной код после создания нового модульного теста, за исключением того, что я добавил в одно утверждение, которое должно всегда проходить):

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:

enter image description here

Вот код ошибки / журнала в тексте:

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 решение состоит в том, чтобы просто перезагрузить устройство .Еще один извлеченный урок: используйте вкладку "Сообщения", чтобы просмотреть журналы и ошибки, которые являются самой правой вкладкой рядом с вкладкой "Точка останова".

Его полный ответ здесь .

1 Ответ

0 голосов
/ 06 декабря 2018

Проблема решена в комментариях.Для будущих читателей, вот несколько хороших вещей, чтобы проверить, если вы сталкиваетесь с подобными проблемами:

  1. Проверьте вкладку сообщений Xcode, чтобы найти ошибки сборки.
  2. Перезапустите устройство / симулятор в зависимости от ситуации. Это решило проблему в этом случае.
  3. Удаление / переустановка приложения на устройстве / симуляторе.
  4. Действительны ли сертификаты / профили обеспечения?Попробуйте сгенерировать новые и запустить заново.
  5. Работает ли это на симуляторе?Если да, скорее всего, это проблема самого устройства.
  6. Ударяются ли точки останова при запуске кода?Если да, то это провал теста.Если нет, проблема возникает еще до запуска тестов (как здесь было).
...