我无法在UnitTest中获得BundleVersionKey,BundleIdentiferKey

时间:2016-05-10 05:24:24

标签: ios xcode unit-testing testing xctest

我为iOS应用程序开发了一个框架。 我有一个单元测试用例,用于测试以获取bundleIdentiferKey,bundleVersionKey。

当我运行测试时,它总是失败,因为Bundle Key是nil

我获取Bundle ID的逻辑如下。

 NSString * package = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleIdentifierKey];


 NSString * version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];

我发现只有在我的框架源中的单元测试用例时才会nil, 但不在我的示例应用中。

我认为这不是问题,因为UnitTest Target在info.plist中也有一个bundle Identifier,bundle version

 NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);

 version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];

这些对我来说也没有帮助..

我不知道如何解决这个问题。谢谢。

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,并找到了两种可能的解决方法,具体取决于你究竟要做什么。

[NSBundle mainBundle]替换为[NSBundle bundleForClass:[self class]]或将主机应用程序设置为单元测试目标。

答案 1 :(得分:0)

要找到您的UnitTest BundleID(在“构建”设置中)并使用以下方法:

CFBundleRef currentTestBundle = CFBundleGetBundleWithIdentifier(CFSTR("<<unit.test.bundleID>>"));