ios – 向项目添加虚拟对象

我想在项目中添加虚拟对象以进行测试,但我不希望它们包含在我的最终构建中.所以我有我的AppDelegate类,并在那里导入:
#ifdef TESTING
#import "DummyBeaconLocationManager.h"
#else
#import "BeaconLocationManager.h"
#endif

然后:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
#ifdef TESTING
    [[DummyBeaconLocationManager sharedInstance] startRanging];
#else
    self.beaconLocationManager = [BeaconLocationManager sharedInstance];
    [self.beaconLocationManager startRanging];
#endif
    return YES;
}

但问题是我必须将此包含在我的目标成员中,而不是我的测试目标.有没有办法不在我的主目标中包含这些文件,但仅限于测试目标?

编辑:
需要做的是在发布后测试我的应用程序.我想在模拟器上测试它,但是使用信标的app.所以我创建了代表信标的虚拟对象并模拟了位置管理器.当应用程序以TESTING选项启动时,它不会启动测距信标,而是将虚拟对象作为信标.

解决方法

按照这些步骤操作后,您将能够为构建添加具有测试功能的测试类.要使用测试功能运行您的应用程序,您应该选择下面配置的测试方案.

Xcode项目配置(使用Xcode 7.0.1)

要允许条件导入和功能有效进行测试,您需要以下成分:

>测试配置
>测试目标
>测试方案

方案,目标和构建配置的简短说明

>方案指向目标和配置.
>可以使用不同的构建设置配置目标.
>可以添加配置,以分支出目标构建设置.

以下是步骤:

1.复制配置以进行测试

在Project Navigator中选择项目文件后,请按照下列步骤操作:

>选择项目目标
>选择信息
>选择添加配置

>选择复制“调试”配置

Duplicate "Debug" Configuration


>重命名新配置,然后将其拖动到重新排序

2.复制目标进行测试

现在您已拥有测试配置,请添加测试目标.在项目导航器中选择项目文件,请按照下列步骤操作:

>右键单击或按住Option键单击现有目标,然后选择“复制”.

>点击新目标以重命名,然后拖动它以重新排序目标.

3.管理计划

现在您已拥有测试目标和配置,您可以添加指向新目标和配置的方案.

>点击方案(停止按钮旁边),然后选择管理方案…

>在Schemes管理器弹出窗口中,如果您已选择自动创建方案,则已列出新方案.否则,您可以点击弹出窗口添加方案.每个方案都可以共享,如下所示:

>点击新方案重命名,然后拖动它重新排序:

>要编辑新方案,请确保选中该方案,然后点击编辑…

>在编辑面板中,选择测试构建配置

>通过点击“可执行文件”下拉列表,确保该方案指向“测试目标”:

>确保方案指向正确的构建配置,以用于其他操作,例如自动化测试:

4.配置目标的构建设置

现在您已将测试方案设置为指向测试配置,它将与Debug配置完全相同,直到您修改构建设置.请按照以下步骤更改测试配置的构建设置:

>对于大多数构建设置,每个配置都有一个选项.选择要在设置中使用的配置时,请确保选择了主目标:

>预处理器宏位于标题为“Apple LLVM 7.0 – 预处理”的部分下:

>点击一行,选择它,点击回车键编辑并提交更改,使用箭头键向上或向下移动.为所有配置定义所有预处理器宏是一个好习惯,如下所示:

5.向测试目标添加一个类

现在,测试方案指向一种与Debug配置不同的配置.您现在应该可以从方案下拉菜单中选择测试方案,并运行您的测试配置.

您可以使用以下两种方法之一修改类的目标成员资格.

>当您创建新文件时,您可以选择位置的第三个面板,底部有选项,用于每个目标:

>在Project Navigator中选择文件时,File Inspector具有Target Membership面板,您可以在其中进行修改

计划

通常将方案配对以构建配置.一个好的做法是为每个需要不同版本的构建的受众设置方案/配置.以下是一些通常需要单独配置的基本受众群体:

>开发人员> DEBUG
>开发人员>测试
>内部测试>发展
> Beta测试人员/生产>应用商店

子类

如果要修改测试模式中的任何功能,可以使用子类,并仅将子类添加到测试目标.

相关文章

背景 前端时间产品经理决定使用百度统计,使得 工程B 中原统计sdk-友盟统计,需要被去除。之前尝试去除...
结论: alloc负责分配内存和创建对象对应的isa指针; init只是返回alloc生成的对象。 所以alloc后,多次...
更新 如果UI愿意把启动图切割成n份,按一定约束在launchscreen.storyboard中进行排版,启动图效果会更好...
最近在看一本书《Effective OC 2.0》,今天看到有个tip是OC适中循环各自优劣性,作者最终推荐此块循环。...
// // ViewController.m // paintCodeTestOC //gif // Created by LongMa on 2019/7/25. // #import &a...
背景介绍 一般情况下,出于省电、权限、合理性等因素考虑,给人的感觉是很多奇怪的需求安卓可以实现,但...