使用 KIF 访问另一个目标中的类

Posted

技术标签:

【中文标题】使用 KIF 访问另一个目标中的类【英文标题】:Get access to the classes in another target with KIF 【发布时间】:2014-12-06 14:01:16 【问题描述】:

我有一个带有动态变化行数的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 时出现错误

 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 添加到测试目标中的 Compile Cources,但这意味着我必须将所有类添加两次(在主目标和测试目标中),mm。 有什么想法吗?我可以通过另一种方式访问​​主要目标中的类吗 ?

【问题讨论】:

你的 SearchModel 的类型是动态的还是静态的? 尝试检查文件关联。确保文件包含在目标中。 @kpsharp,也许你不明白我的问题,这个变种不适合我 那句话没有任何意义。这对我没有帮助。我理解你的问题,但我认为你没有理解我的回答。 【参考方案1】:

测试,以及 KIF 测试,都捆绑为正在测试的主机应用程序的一部分。确保在项目的“构建设置”中的“链接”下的“捆绑加载器”和“测试”下的“测试主机”都设置为您的应用程序二进制文件。如果您已将 KIF 目标创建为“ios 单元测试包”,则应默认设置。

【讨论】:

【参考方案2】:

编译错误告诉你出了什么问题。您正在 x64 模式下运行 KIF 测试(检查您的架构和 build_settings 中的有效架构。您有 arm64 吗?)您的目标应用程序可能没有相同的架构设置。

首先,我会确保您的 KIF 测试目标和您的应用之间的架构设置相同

【讨论】:

以上是关于使用 KIF 访问另一个目标中的类的主要内容,如果未能解决你的问题,请参考以下文章

KIF:KIF 可以访问被测 iOS 应用程序的文件系统吗?

C ++:如何访问另一个类中的类函数?

无法使用从 python 中同一目录中的另一个文件访问的类

未调用使用 KIF dateChangedAction 的 UIDatePicker 自动化

可访问性在 KIF 中检测为未启用

访问 xib 和另一个项目的类?