我需要重置iPhone模拟器,并且没有找到一种方法来不使用鼠标.这是一件小事,但我真的厌倦了这样做,并希望有一种方法来使用键盘快捷方式.
更好的方法是从命令行重置它,所以我可以在部署脚本中构建重置.
我对iOS或MacOS不太熟悉.
Apple在Xcode 7中引入了新的UI测试,但是每当测试启动应用程序时我都会遇到困难,它从应用程序之前的数据开始.这意味着测试不能独立,并且可能受到其他测试的影响.
无法访问用户默认值和其他数据,因为运行测试的应用程序无法访问已测试应用程序的捆绑包.脚本也是不可能的,因为它们可以在测试之前或之后运行.并且无法在iOS上执行NSTask以在每个测试套件之前运行脚本.
有没有办法在每个测试套件之前重置应用程序数据?
我发现Xcode 7(版本7.0(7A220))改变了+load在单元测试期间调用类和类别的方法的顺序.
如果属于测试目标的类别实现了一个+load方法,那么现在可以在最后调用它,此时类的实例可能已经被创建和使用.
我有一个AppDelegate实现+load方法.该AppDelegate.m文件还包含AppDelegate (MainModule)类别.此外,还有一个单元测试文件LoadMethodTestTests.m,其中包含另一个类别 - AppDelegate (UnitTest).
这两个类别也实现了+load方法.第一类属于主要目标,第二类属于测试目标.
我做了一个小测试项目来证明这个问题.它是一个空的默认Xcode一个视图项目,只更改了两个文件.
AppDelegate.m:
#import "AppDelegate.h"
@implementation AppDelegate
+(void)load {
NSLog(@"Class load");
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"didFinishLaunchingWithOptions");
return YES;
}
@end
@interface AppDelegate (MainModule)
@end
@implementation AppDelegate (MainModule)
+(void)load {
NSLog(@"Main Module +load");
}
@end
Run Code Online (Sandbox Code Playgroud)
和一个单元测试文件(LoadMethodTestTests.m):
#import <UIKit/UIKit.h>
#import <XCTest/XCTest.h>
#import "AppDelegate.h"
@interface LoadMethodTestTests : XCTestCase
@end
@interface AppDelegate (UnitTest) …Run Code Online (Sandbox Code Playgroud) 它们共享相同的 UDID 吗?它们是如何在幕后实施的?
场景是我有 4 个并行运行 UI 测试的克隆。我需要一个干净的模拟器来进行一些测试(但想保持随机测试顺序)
我目前正在尝试运行 UITests,根据此答案在每次测试后重新安装应用程序:https ://stackoverflow.com/a/36168101/13081999
我猜它与 Xcode 11.4 的新版本有关,因为发行说明说:
以前,在运行 UI 测试时,在每次测试开始之前重新安装被测目标。从 Xcode 11.4 开始,每个测试会话和设备都会安装一次被测目标,从而大大加快了 UI 测试的速度。(24776269)
我已经尝试使用旧版构建系统,但这并没有改变任何事情。
这是详细的错误消息:
细节
找不到已安装的应用程序域:com.apple.platform.iphoneos 代码:-1 恢复建议:安装声称已成功,但在设备上找不到应用程序。bundleId = xx.xxxx.xxx.xx
多次查找尝试后,已安装应用程序的数据库中不存在已安装应用程序。
域名:com.apple.platform.iphoneos
代码:-1
系统信息
macOS 版本 10.15.4(内部版本 19E266)Xcode 11.4 (16134)
尝试在 iPad(第 7 代)iOS 13.4 上运行测试
有没有办法在 XCUITests 中测试 UIApplication 快捷方式?
我知道为了在模拟器中测试 3d 快捷方式,您需要一个带有强制触摸功能的触控板,但我想知道是否可以编写测试我的快捷方式的测试。
我的应用程序有 UITests,并且所有测试都运行良好,但有时在执行几个测试后,其他测试开始失败,因为60.0 秒后无法终止 com.test.abc:3708; 状态依然是Running Foreground(4)CreateUserUITest
我的iOS应用程序目前有一个iOS 7的部署目标(虽然我的方案运行iOS 9.2模拟器),以及与AddressBook,AddressBookUI和CoreLocation框架的链接.我在Xcode 7中有一套Swift UI测试(不在Instruments中).当用户首次使用我的应用时,系统会要求他们在应用运行时访问其联系人及其位置.由于这涉及需要完美执行的大量代码,因此我希望自动化所有可能的结果并确保UI处于所需状态.
我可以使用Xcode UI测试重置模拟器的设置以访问联系人和位置吗?例如,我可以setUp()在我的测试用例类中的函数中实现它.我找到了一些关于如何响应对话框的教程,但在我到达那一点之前,我需要模拟请求权限的条件.这是一个解释如何响应此类警报的问题.
ios ×6
xcode ×3
simulator ×2
swift ×2
ui-testing ×2
xcode7 ×2
3dtouch ×1
objective-c ×1
testing ×1
unit-testing ×1
workflow ×1
xctest ×1