将虚拟对象添加到项目
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.复制配置进行测试
在项目导航器中 select 编辑了项目文件后,请执行以下步骤:
- Select项目目标
- Select 信息
- Select + 添加配置
2。复制一个目标进行测试
既然您已经有了测试配置,请添加一个测试目标。使用项目导航器中的项目文件 select,按照以下步骤操作:
3。管理方案
既然您已经有了测试目标和配置,就可以添加指向新目标和配置的方案了。
4.为您的目标配置构建设置
现在您已将测试方案设置为指向测试配置,它的行为将与调试配置完全相同,直到您修改构建设置。请按照以下步骤更改测试配置的构建设置:
5.将 class 添加到您的测试目标
现在,测试方案指向一个与您的调试配置行为不同的配置。您现在应该能够从方案下拉菜单中 select 测试方案,以及 运行 您的测试配置。
您可以通过以下两种方式之一修改 class 的目标成员资格。
- 当您创建新文件时,您可以在第三个面板中选择位置,在底部有针对每个目标的选项:
计划
通常将方案配对以构建配置。一个好的做法是为每个需要不同版本构建的受众提供 scheme/configuration。以下是一些通常需要单独配置的基本受众:
- 开发人员 > 调试
- 开发人员 > 测试
- 内部测试 > 开发
- Beta 测试人员/生产 > APP STORE
Subclassing
如果您想在测试模式下修改任何功能,您可以使用子class,并且只将子class添加到您的测试目标。
我很容易在这方面有所不同,但我猜这可能有效:
就像使用 cocoapods 一样,当您创建 pod 文件时,您会删除select 目标(项目名称)。如果你这样做,那么 select 目标(项目名称测试)
我想在项目中添加用于测试的虚拟对象,但我不希望它们包含在我的最终构建中。所以我有我的 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.复制配置进行测试
在项目导航器中 select 编辑了项目文件后,请执行以下步骤:
- Select项目目标
- Select 信息
- Select + 添加配置
2。复制一个目标进行测试
既然您已经有了测试配置,请添加一个测试目标。使用项目导航器中的项目文件 select,按照以下步骤操作:
3。管理方案
既然您已经有了测试目标和配置,就可以添加指向新目标和配置的方案了。
4.为您的目标配置构建设置
现在您已将测试方案设置为指向测试配置,它的行为将与调试配置完全相同,直到您修改构建设置。请按照以下步骤更改测试配置的构建设置:
5.将 class 添加到您的测试目标
现在,测试方案指向一个与您的调试配置行为不同的配置。您现在应该能够从方案下拉菜单中 select 测试方案,以及 运行 您的测试配置。
您可以通过以下两种方式之一修改 class 的目标成员资格。
- 当您创建新文件时,您可以在第三个面板中选择位置,在底部有针对每个目标的选项:
计划
通常将方案配对以构建配置。一个好的做法是为每个需要不同版本构建的受众提供 scheme/configuration。以下是一些通常需要单独配置的基本受众:
- 开发人员 > 调试
- 开发人员 > 测试
- 内部测试 > 开发
- Beta 测试人员/生产 > APP STORE
Subclassing
如果您想在测试模式下修改任何功能,您可以使用子class,并且只将子class添加到您的测试目标。
我很容易在这方面有所不同,但我猜这可能有效:
就像使用 cocoapods 一样,当您创建 pod 文件时,您会删除select 目标(项目名称)。如果你这样做,那么 select 目标(项目名称测试)