将虚拟对象添加到项目

Adding dummy objects to project

我想在项目中添加用于测试的虚拟对象,但我不希望它们包含在我的最终构建中。所以我有我的 AppDelegate class 并且有进口:

#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;
}

但问题是我必须将其包含在我的 Target Membership 中,而不是我的测试目标。有没有办法不将这些文件包含在我的主要目标中,而只包含在 Test 目标中?

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

好的,如果我没看错,你应该:

  • a) 为测试海豚创建一个单独的目标(如@Carl Veazey 和 @Rainer Schwarze 建议)与您的主要代码库几乎相同 目标。
  • b) 我建议模拟您的位置管理器和信标
    通过 BeaconLocationManager 和 YourBeacon
    子类化的对象 (例如)。然后,您只需使用
    覆盖真实行为 特定于模拟器的操作。

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

完成这些步骤后,您将能够将具有测试功能的测试 class 添加到您的构建中。要 运行 您的应用使用测试功能,您应该 select 下面配置的测试方案。

Xcode 项目配置(使用 Xcode 7.0.1)

要使条件导入和功能对测试有效,您将需要以下成分:

  1. 测试配置
  2. 测试目标
  3. 测试方案

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

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

步骤如下:

1.复制配置进行测试

在项目导航器中 select 编辑了项目文件后,请执行以下步骤:

  1. Select项目目标
  2. Select 信息
  3. Select + 添加配置

  1. Select 重复“调试”配置

  2. 重命名新配置,并将其拖到re-order

2。复制一个目标进行测试

既然您已经有了测试配置,请添加一个测试目标。使用项目导航器中的项目文件 select,按照以下步骤操作:

  1. Right-click 或 Option-click 现有目标,并且 select 重复。

  2. 点击新目标重命名,然后拖动它重新排序您的目标。

3。管理方案

既然您已经有了测试目标和配置,就可以添加指向新目标和配置的方案了。

  1. 点击方案(在停止按钮旁边),然后select管理方案...

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

  3. 点击新方案重命名,拖动重新排序:

  4. 要编辑新方案,请确保它已 selected,然后点击编辑...

  5. 在编辑面板中,select 测试构建配置

  6. 通过点击可执行文件 drop-down 确保方案指向测试目标:

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

4.为您的目标配置构建设置

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

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

  2. 预处理器宏位于标题为 'Apple LLVM 7.0 - Preprocessing' 的部分下:

  3. 点击一行,select它,点击回车键编辑并提交您的更改,使用箭头键向上或向下移动。为所有配置定义所有预处理器宏是一个很好的做法,如下所示:

5.将 class 添加到您的测试目标

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

您可以通过以下两种方式之一修改 class 的目标成员资格。

  1. 当您创建新文件时,您可以在第三个面板中选择位置,在底部有针对每个目标的选项:

  1. 当您在项目导航器中 select 文件时,文件检查器有一个目标成员面板,您可以在其中进行修改:

计划

通常将方案配对以构建配置。一个好的做法是为每个需要不同版本构建的受众提供 scheme/configuration。以下是一些通常需要单独配置的基本受众:

  • 开发人员 > 调试
  • 开发人员 > 测试
  • 内部测试 > 开发
  • Beta 测试人员/生产 > APP STORE

Subclassing

如果您想在测试模式下修改任何功能,您可以使用子class,并且只将子class添加到您的测试目标。

我很容易在这方面有所不同,但我猜这可能有效:

就像使用 cocoapods 一样,当您创建 pod 文件时,您会删除select 目标(项目名称)。如果你这样做,那么 select 目标(项目名称测试)