iOS / Swift: «Нет такого модуля ...» для тестирования пользовательского интерфейса - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь создать автоматизированные тесты пользовательского интерфейса для моего приложения для iOS. После того, как я не смог заставить это работать в моем существующем приложении, я создал новое с нуля и попробовал там. Кажется, что он всегда терпит неудачу, потому что не может импортировать зависимости, которые я установил с Cocoapods.

Я сейчас использую XCode версии 10.2.1 (10E1001)

Инструкция по тиражированию:

  1. Запустите XCode, создайте новый проект (приложение Single View, Swift, юнит-тесты и тесты пользовательского интерфейса). Я назвал свой проект UITestProto
  2. Запустите pod init для проекта.
  3. Добавить зависимость HydraAsync

Подфайл должен выглядеть так:

# Uncomment the next line to define a global platform for your project
platform :ios, '12.2'

target 'UITestProto' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for UITestProto

  target 'UITestProtoTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'UITestProtoUITests' do
    inherit! :search_paths
    # Pods for testing
    pod 'HydraAsync'
  end
end
  1. Перейдите в настройки сборки цели UITestProtoUITests в XCode и установите для «Всегда встраивать Swift стандартные библиотеки» значение $(inherited):

Embedded swift std libs

  1. Пробег pod install
  2. Откройте проект, используя UITestProto.xcworkspace
  3. Откройте файл UITestProtoUITests.swift и попробуйте импортировать модуль OHHTTPStubs.
import XCTest

import Hydra

class UITestProtoUITests: XCTestCase {
...

В этот момент вы должны увидеть ошибку:

Нет такого модуля 'Hydra'

Я пробовал:

  1. добавление @testable import UITestProto, потому что я должен был сделать это для своих модульных тестов
  2. Убедитесь, что для "Включить тестируемость" в "Настройках сборки" установлено значение "Да"

И я очищал папку сборки и закрывал / открывал XCode после каждого из этих шагов, но все равно не повезло при импорте Hydra.

Примечание: я на самом деле не использую Hydra для тестирования, это просто библиотека, которую я успешно использовал в проектах в прошлом

Ответы [ 2 ]

2 голосов
/ 23 апреля 2019

Это связано с проблемой CocoaPods .Обходной путь подсказал, что здесь помогает мне.Возможно, вам придется перестроить проект.

Для дальнейшего использования я написал сообщение:

# Moving the UITests target outside of the main target 
# in the Podfile seems to have helped. So now instead of this:

target 'Target' do
  use_frameworks!
  ...

  target 'TargetTests' do
    inherit! :search_paths
    ...
  end

  target 'TargetUITests' do
    inherit! :search_paths
    ...
  end

end

## we have this:

target 'Target' do
  use_frameworks!
  ...

  target 'TargetTests' do
    inherit! :search_paths
    ...
  end
end

target 'TargetUITests' do
    inherit! :search_paths
    ... # all the pods we normally use
 end

Кредиты PWrzesinski

0 голосов
/ 23 апреля 2019

Попробуйте:

platform :ios, '12.2'

target 'UITestProto' do

  #some pods for your main target

  target 'UITestProtoTests' do
    inherit! :search_paths
    #pods for your unit tests
  end

  target 'UITestProtoUITests' do
    pod 'HydraAsync'
  end
end

И после этого запустите pod deintegrate и pod update && pod install.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...