Получить доступ к классам в другой цели с KIF

У меня есть pickerView с динамически меняющимся количеством строк. Я хочу выбрать этот счет из моей модели в основной цели приложения.

Например, // цель теста

#import <KIF/KIF.h>
#import "SearchModel.h" //import class from main target

@interface Acceptance_Tests : KIFTestCase
@property (nonatomic, strong) SearchModel * searchModel;

@end

@implementation Acceptance_Tests

-(void)test_01_SearchWithConditions
{
    self.searchModel = [[SearchModel alloc] init];

    [tester tapViewWithAccessibilityLabel:@"Search Library"];
    [tester tapViewWithAccessibilityLabel:@"type_pickerView"];

    //choose type
    for(int i = 0; i < self.searchModel.types.count; i++)
    {
        [tester waitForTappableViewWithAccessibilityLabel:@"Search"];
        [tester selectPickerViewRowWithTitle:[self.searchModel.types objectAtIndex:i]];
        [tester tapViewWithAccessibilityLabel:@"Search"];
    }
}

Когда я делаю Cmnd+U I, появляется ошибка

 Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_SearchModel", referenced from:
      objc-class-ref in Acceptance_Tests.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Также я могу добавить SearchModel.m к источникам компиляции в цели теста, но это означает, что я должен добавить все классы дважды (в основной цели и в цели теста), мм. Какие-нибудь мысли? Могу ли я получить доступ к классам в главной цели другим способом?

2 ответа

Тесты, а также тесты KIF, входят в состав тестируемого хост-приложения. Убедитесь, что "Bundle Loader" в "Linking" и "Test Host" в "Testing", оба в "Build settings" проекта, установлены в двоичный файл вашего приложения. Если вы создали свою цель KIF как "Пакет iOS Unit Testing Bundle", это должно быть установлено по умолчанию.

Ошибка компиляции говорит вам, что не так. Вы запускаете тесты KIF в режиме x64 (проверьте свою архитектуру и действительные архитектуры в build_settings. У вас есть arm64?) Ваше целевое приложение, вероятно, не имеет таких же настроек архитектуры.

Для начала я бы удостоверился, что настройки архитектуры идентичны для вашей цели тестирования KIF и вашего приложения.

Другие вопросы по тегам