是否可以在模拟器中使用 xcuitest 自动化触摸 ID 或面部 ID?
Is it possible to automate touch ID or face ID using xcuitest in simulator?
有没有办法在模拟器中使用 xcuitest 框架自动执行面部 ID 或触摸 ID。我可以手动执行注册 face/touch id 并执行匹配或非匹配场景。但是我想知道它是否可以自动化?
鉴于 Kane Cheshire this post,可以通过像这样发送 Darwin 通知来自动执行触摸 ID 和面容 ID 以进行单元测试:
+ (void)enrolled {
int token;
notify_register_check("com.apple.BiometricKit.enrollmentChanged", &token);
notify_set_state(token, 1);
notify_post("com.apple.BiometricKit.enrollmentChanged");
}
虽然仅在 Objective-C 中,因此您可能需要使用桥接头。
在 Gitub 上导入文件 Biometrics.m
and Biometrics.h
from his demo,您将能够从您的 XCTestCase
.
调用 Biometrics.enrolled()
或者,如果 Touch/FaceId 阻止了您的 XCUITesting,我建议您进行如下所示的简单检查以禁用 Touch/faceId
guard CommandLine.isRunningUITests else {
return true
}
extension CommandLine {
static var isRunningUITests:Bool {
return CommandLine.arguments.contains("--uitesting")
}
}
你可以像下面这样轻松通过LaunchArguments
XCUIApplication().launchArguments.append("--uitesting")
有没有办法在模拟器中使用 xcuitest 框架自动执行面部 ID 或触摸 ID。我可以手动执行注册 face/touch id 并执行匹配或非匹配场景。但是我想知道它是否可以自动化?
鉴于 Kane Cheshire this post,可以通过像这样发送 Darwin 通知来自动执行触摸 ID 和面容 ID 以进行单元测试:
+ (void)enrolled {
int token;
notify_register_check("com.apple.BiometricKit.enrollmentChanged", &token);
notify_set_state(token, 1);
notify_post("com.apple.BiometricKit.enrollmentChanged");
}
虽然仅在 Objective-C 中,因此您可能需要使用桥接头。
在 Gitub 上导入文件 Biometrics.m
and Biometrics.h
from his demo,您将能够从您的 XCTestCase
.
Biometrics.enrolled()
或者,如果 Touch/FaceId 阻止了您的 XCUITesting,我建议您进行如下所示的简单检查以禁用 Touch/faceId
guard CommandLine.isRunningUITests else {
return true
}
extension CommandLine {
static var isRunningUITests:Bool {
return CommandLine.arguments.contains("--uitesting")
}
}
你可以像下面这样轻松通过LaunchArguments
XCUIApplication().launchArguments.append("--uitesting")