Ios 向项目中添加虚拟对象

Ios 向项目中添加虚拟对象,ios,objective-c,xcode,build-settings,Ios,Objective C,Xcode,Build Settings,我想添加虚拟对象以在项目中进行测试,但我不希望它们包含在最终构建中。因此,我有我的AppDelegate类,导入中有: #ifdef TESTING #import "DummyBeaconLocationManager.h" #else #import "BeaconLocationManager.h" #endif 后来: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDi

我想添加虚拟对象以在项目中进行测试,但我不希望它们包含在最终构建中。因此,我有我的
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;
}
但问题是,我必须将其包括在我的
目标成员资格中,而不是我的测试目标中。有没有办法不将这些文件包含在我的主目标中,而只包含在
测试中
目标中

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

好的,如果我做对了,你应该:

  • a) 为测试porposes创建一个单独的目标(如@Carl Veazey和 @Rainer Schwarze建议)使用与主应用程序几乎相同的代码库 目标
  • b) 我建议您嘲笑您的位置经理和beacon
    通过从BeaconLocationManager和YourBeacon子类化对象
    (例如)。然后,您只需使用
    模拟器特定动作

一天结束时,与主目标相比,您的测试目标将只包含另外两个类(模拟信标管理器和模拟信标)。不需要对项目结构或代码语义进行其他更改。祝你好运。

遵循这些步骤后,您将能够将具有测试功能的测试类添加到构建中。要使用测试功能运行应用程序,应选择下面配置的测试方案

Xcode项目配置(使用Xcode 7.0.1) 要使条件导入和功能对测试有效,您需要以下要素:

  • 测试配置
  • 测试目标
  • 测试方案
  • 简要说明方案、目标和构建配置
    • 方案指向目标和配置
    • 可以使用不同的生成设置配置目标
    • 可以添加配置,以扩展目标生成设置
    以下是步骤: 1。复制用于测试的配置

    在项目导航器中选择项目文件后,请执行以下步骤:

  • 选择项目目标
  • 选择信息
  • 选择+以添加配置
  • 选择重复的“调试”配置

  • 重命名新配置,并将其拖动以重新排序

  • 2。复制测试目标

    现在您已经有了一个测试配置,添加一个测试目标。在项目导航器中选择项目文件后,请执行以下步骤:

  • 右键单击或选择现有目标,然后选择“复制”。

  • 点击新目标以重命名它,然后拖动它以对目标重新排序。

  • 3。管理方案

    现在您已经有了一个测试目标和配置,可以添加一个指向新目标和配置的方案了

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

  • 在Schemes manager弹出窗口中,如果选择自动创建方案,则新方案将已列出。否则,您可以在弹出窗口中点击+以添加方案。每个方案都可以共享,如下图:

  • 点击新方案以将其重命名,然后拖动它以重新排序:

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

  • 在编辑面板中,选择测试生成配置

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

  • 确保方案针对其他操作(如自动测试)指向正确的生成配置:

  • 4。为目标配置生成设置

    现在您已经将测试方案设置为指向测试配置,它的行为将与调试配置完全相同,直到您修改构建设置为止。按照以下步骤更改测试配置的生成设置:

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

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

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

  • 5。将类添加到测试目标中

    现在,测试方案指向一个与调试配置行为不同的配置。您现在应该能够从schemes下拉菜单中选择测试方案,并运行测试配置

    您可以通过以下两种方式之一修改类的目标成员身份

  • 创建新文件时,可以选择位置的第三个面板底部有针对每个目标的选项:
  • 在项目导航器中选择文件时,“文件检查器”有一个目标成员资格面板,您可以在其中进行修改:
  • 计划 方案通常成对生成配置。一个好的实践是为每个需要不同版本构建的受众提供一个方案/配置。以下是一些通常需要单独配置的基本受众:

    • 开发者>调试
    • 开发者>测试
    • 内部测试>开发
    • 测试人员/生产>应用商店
    子类别化 如果您想在测试模式下修改任何功能,可以使用子类,并且只将子类添加到