我想在项目中添加虚拟对象以进行测试,但我不希望它们包含在我的最终版本中。所以我有我的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;
}
但问题是我必须将其包含在我的Target Membership
中,而不是我的测试目标中。有没有办法不在我的主目标中包含这些文件,但仅限于Test
目标?
编辑: 需要做的是在发布后测试我的应用程序。我想在模拟器上测试它,但是使用信标的app。所以我创建了代表信标的虚拟对象并模拟了位置管理器。当应用程序以TESTING选项启动时,它不会启动测距信标,而是将虚拟对象替换为信标。
答案 0 :(得分:7)
按照这些步骤操作后,您将能够将具有测试功能的测试类添加到构建中。要使用测试功能运行您的应用程序,您应该选择下面配置的测试方案。
要使条件导入和功能对测试有效,您需要以下成分:
<强> 1。复制配置以进行测试
在Project Navigator中选择项目文件后,请按照下列步骤操作:
<强> 2。复制目标以进行测试
现在您已拥有测试配置,请添加测试目标。使用项目导航器中的项目文件选择,请按照下列步骤操作:
第3。管理方案
现在您已拥有测试目标和配置,您可以添加指向新目标和配置的方案。
在Schemes manager弹出窗口中,如果您已选择自动创建方案,则已列出新方案。否则,您可以在弹出窗口中点击+以添加方案。每个方案都可以共享,如下所示:
<强> 4。配置目标的构建设置
现在您已将测试方案设置为指向测试配置,它将与Debug配置完全相同,直到您修改构建设置。请按照以下步骤更改测试配置的构建设置:
答案 1 :(得分:0)
好吧,如果我做对了,你应该:
在一天结束时,与主要目标相比,您的测试目标将只包含2个类(模拟信标管理器和模拟信标)。不需要对项目结构或代码语义进行其他更改。祝你好运。
答案 2 :(得分:0)