Можете ли вы создать цель “надмножества” в Xcode?

StackOverflow https://stackoverflow.com/questions/412103

Вопрос

Для целей модульного тестирования я хотел бы создать целевой проект iPhone project в Xcode, который включает в себя все файлы приложения release, а также некоторые дополнительные файлы, содержащие код, полезный для модульного тестирования пользовательского интерфейса.

Я могу сделать это, продублировав исходную цель приложения;однако проблема заключается в том, что каждый раз, когда я добавляю новый исходный файл в целевое приложение, мне нужно также добавить его в целевое UnitTestUI.Это не имеет большого значения, просто неудобно всегда помнить о добавлении файлов к обоим целевым объектам.

Есть ли какой-нибудь способ настроить зависимость так, чтобы каждый файл, добавленный в исходное целевое приложение, также автоматически добавлялся в цель модульного тестирования?

Это было полезно?

Решение

В Xcode вы можете создавать цели, которые напрямую зависят друг от друга. Существует несколько целей построения не продуктов, которые могут помочь с этим в категории Другие при добавлении новой цели, в зависимости от того, насколько проста или сложна ваша установка. Создание конкретных целей для запуска модульных тестов с прямой зависимостью от основной цели проекта очень распространено и задокументировано Apple и рядом блогов.

В вашей ситуации, однако, вам, возможно, придется много доработать новую цель тестирования пользовательского интерфейса, но как только она будет настроена, ее будет очень легко поддерживать. Не зная вашей точной ситуации, невозможно дать вам пошаговый ответ, но вот общие рекомендации (настройка в соответствии с вашей ситуацией):

<Ол>
  • Создайте копию исходной цели, поскольку большинство настроек будут такими же.
  • Выберите новую цель и откройте инспектор (& # 8984; I)
  • В разделе Прямые зависимости нажмите кнопку + и выберите свою основную цель.
  • Установите новую цель, как вам нужно, с дополнительной документацией / источником / правилами или чем-то еще.
  • Если вы предпочитаете перетаскивать объекты, вы также можете перетащить исходную цель (из-под раскрывающего треугольника Цели ) в новую цель, и она автоматически настроит зависимость.

    Теперь выберите цель тестирования в качестве активной цели, и она всегда будет строиться по этим правилам. Кроме того, если вы добавите / измените источник в основной цели, он будет правильно перестроен при создании цели тестирования ... не нужно также не забывать добавлять исходный файл в цель тестирования. Я предлагаю потратить некоторое время, чтобы прочитать различные документы по Xcode и поиграть со многими доступными целевыми шаблонами ... в конечном счете, это действительно помогает сделать продукт намного более эффективным. Есть много изящных вещей, которые можно довольно легко сделать в Xcode, если вы знаете, даже с очень большими или сложными проектами.

    Другие советы

    Нет, нет. Есть ли какая-то конкретная причина, по которой вы хотите, чтобы каждый файл в вашей цели модульного теста? Это будет включать main.m и все классы, которые вы не тестируете (например, ваши классы представления). На самом деле, если main.m включен в ваш модульный тест, то как ваш тест будет работать правильно?

    Я решил проблему, создав большую часть своего приложения в виде статической библиотеки, которая связана как с приложением, так и с объектами модульного тестирования.

    Цели в моем проекте выглядят следующим образом:

    • libMyApp
      • компилировать файлы .m
    • MyApp.приложение
      • libMyApp (зависимость)
      • Связь с библиотекой:libMyApp.a
    • UITest.app
      • libMyApp (зависимость)
      • Связь с библиотекой:libMyApp.a

    Таким образом, я могу добавить .m файлы предназначены только для "libMyApp", и они доступны как в приложении, так и в тестах, и их даже не нужно перекомпилировать.

    Единственная проблема заключается в том, что статическая библиотека, похоже, не поддерживает категории Objective-C, поэтому мне все равно приходится добавлять их к каждой цели отдельно.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top