我为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"];
这些对我来说也没有帮助..
我不知道如何解决这个问题。谢谢。
答案 0 :(得分:0)
我遇到了类似的问题,并找到了两种可能的解决方法,具体取决于你究竟要做什么。
将[NSBundle mainBundle]
替换为[NSBundle bundleForClass:[self class]]
或将主机应用程序设置为单元测试目标。
答案 1 :(得分:0)
要找到您的UnitTest BundleID(在“构建”设置中)并使用以下方法:
CFBundleRef currentTestBundle = CFBundleGetBundleWithIdentifier(CFSTR("<<unit.test.bundleID>>"));