在测试中黑掉您的模拟器(授予访问相册、通讯录、日历...)。
您是否遇到过代码中包含了 AddressBook
、EventKit
或 ALAssetsLibrary
API 的问题?在这种情况下,运行测试可能会很烦人。有一个 UIAlertView
会提示用户授予对通讯录和照片的访问权限,这会阻塞并破坏您的测试。使用 JPSimulatorHacks
,您可以在运行测试之前轻松地授予这些访问权限。
如果您遇到任何问题,请查阅下面的 注意事项。
使用 CocoaPods 安装 JPSimulatorHacks
pod 'JPSimulatorHacks'
#import <JPSimulatorHacks/JPSimulatorHacks.h>
@implementation MyAppTests
+ (void)setUp
{
[super setUp];
[JPSimulatorHacks grantAccessToAddressBook];
}
@end
这将授予当前包标识符对地址簿的访问权限。如果有必要,还有一个 API 可以指定包标识符
+ (BOOL)grantAccessToAddressBookForBundleIdentifier:(NSString *)bundleIdentifier;
#import <JPSimulatorHacks/JPSimulatorHacks.h>
@implementation MyAppTests
+ (void)setUp
{
[super setUp];
[JPSimulatorHacks grantAccessToCalendar];
}
@end
这将授予当前包标识符对日历的访问权限。如果有必要,还有一个 API 可以指定包标识符
+ (BOOL)grantAccessToCalendarForBundleIdentifier:(NSString *)bundleIdentifier;
#import <JPSimulatorHacks/JPSimulatorHacks.h>
@implementation MyAppTests
+ (void)setUp
{
[super setUp];
[JPSimulatorHacks grantAccessToHomeKit];
}
@end
这将授予当前包标识符对 HomeKit 的访问权限。如果有必要,还有一个 API 可以指定包标识符
+ (BOOL) grantAccessToHomeKitForBundleIdentifier:(NSString *)bundleIdentifier;
#import <JPSimulatorHacks/JPSimulatorHacks.h>
@implementation MyAppTests
+ (void)setUp
{
[super setUp];
[JPSimulatorHacks grantAccessToPhotos];
}
@end
这将授予当前包标识符对照片库的访问权限。如果有必要,还有一个 API 可以指定包标识符
+ (BOOL)grantAccessToPhotosForBundleIdentifier:(NSString *)bundleIdentifier;
您还可以从指定的 URL 添加一些测试图像。该方法将阻塞直到资源被存储。这对于确保您的测试在资源可用后才开始是有帮助的。
[JPSimulatorHacks grantAccessToPhotos];
NSURL *assetURL = [NSURL URLWithString:@"https://raw.githubusercontent.com/plu/JPSimulatorHacks/master/Data/test.png"];
ALAsset *asset = [JPSimulatorHacks addAssetWithURL:assetURL];
这将授予 iOS 9 附带的新的通讯录框架的权限。
#import <JPSimulatorHacks/JPSimulatorHacks.h>
@implementation MyAppTests
+ (void)setUp
{
[super setUp];
[JPSimulatorHacks grantAccessToContacts];
}
@end
默认情况下,它会在15秒内尝试将必要的条目写入到TCC.db
中。如果时间不足,它就会放弃并从方法中返回NO
。如果因为这个原因时间不足,您可以通过以下方式更改此默认超时:
+ (void)setUp
{
[super setUp];
[JPSimulatorHacks setTimeout:30.0f];
}
JPSimulatorHacks
仅在针对真实的应用程序目标运行单元测试套件时工作:其Host Application
不设置为None
!参见:[http://stackoverflow.com/a/28135995/598057](http://stackoverflow.com/a/28135995/598057)版权(C)2014 Johannes Plunien
允许任何获得本软件和相关文档文件(“软件”)副本的人免费使用该软件,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件的副本,并允许将软件提供给其他人使用,前提是遵守以下条件:
上述版权声明和本许可声明应包括在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的质量保证,无论是明示的还是暗示的,包括但不限于对适销性、针对特定目的的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何主张、损害或其他责任承担责任,无论是否属于合同、侵权或其他行为,从、因或与软件或软件的使用或其他交易有关。