我正在为一个白标项目编写UI测试,其中每个应用程序都有一组不同的菜单项。测试点击每个菜单项并截取屏幕截图(使用fastlanesnapshot)。目前这一切都发生在一个名为testScreenshotAllMenuItems()的XCTestCase中,如下所示:functestScreenshotAllMenuItems(){//TakeascreenshotofthemenuopenTheMenu()snapshot("Menu")varcells:[XCUIElement]=[]//Storeeachmenuitemforuselaterforiin0..我希望能够动态生成每个屏
我正尝试在我的swiftiOS应用程序上开始单元测试,但遇到了一个总障碍。我似乎无法访问任何使用我的appDelegate的东西。我的appDelegate有一个UserController对象,它存储和管理登录用户及其各种数据。为了简化userController的调用,我创建了NSObject的自定义子类,它是我所有模型类的子类。里面有letuserController:UserController=(UIApplication.sharedApplication().delegateas!AppDelegate).userController每当我尝试测试其中一个子类化模型时,此
我正在使用XCTestExpectation测试异步调用。当completionHandler在给定的1秒超时之前执行时,以下代码有效(测试成功)。functest__async_call(){//prepareletsut=ClassToTest()letexpectation:XCTestExpectation=self.expectationWithDescription(nil)//testsut.methodToTestWithCompletionHandler(){()->()inexpectation.fulfill()}//verifyself.waitForExpec
我可以在XCTestCase测试中创建这样的实体:letentity=NSEntityDescription.insertNewObject(forEntityName:String(describing:Example.self),into:inMemoryManagedObjectContext)但是如果我这样做的话:letitem=Example(context:inMemoryManagedObjectContext)测试会失败并显示...failed:caught"NSInvalidArgumentException","AnNSManagedObjectofclass'my
我的UI测试失败了,因为测试会无休止地等待,直到应用空闲。我看不到后台有任何事情发生,例如加载微调器。它只出现在一个选项卡上。所有其他选项卡均可点击,但屏幕3上的测试失败。我在屏幕3上捕获测试后单击另一个选项卡,测试恢复并成功完成。有什么想法吗?-(void)testExample{XCUIElementQuery*tabBarsQuery=self.app.tabBars;[tabBarsQuery.buttons[@"Screen2"]tap];[tabBarsQuery.buttons[@"Screen3"]tap];[tabBarsQuery.buttons[@"Screen1
我无法获得CocoaTouch静态库的XCTestCase单元测试,它依赖于使用imageNamed的代码来工作。我将我的图像“plane.png”添加到测试目标,但是[UIImageimageNamed]一直返回nil。当我在测试中明确指定图像的路径并从文件加载图像时,它确实有效。NSString*imagePath=[[[NSBundlebundleForClass:[selfclass]]resourcePath]stringByAppendingPathComponent:@"plane.png"];UIImage*imageWorks=[UIImageimageWithCon
根据XCTestCase的默认模板中关于setUp的评论:设置代码在这里;它将在第一个测试用例之前运行一次。但是,在XCTestCase.h中,setUp上面的注释表述不同:在调用类中的每个测试方法之前调用的设置方法。为了确认实际行为,我在setUp中放置了一个NSLog来计算它被调用了多少次:staticintcount=0;-(void)setUp{[supersetUp];count++;NSLog(@"CallCount=%d",count);}这导致在每个测试方法之前调用setUp方法(确认对XCTestCase.h的评论)。我想使用setUp方法创建测试/模拟对象一次(例如
我有一个看起来像这样的XCTestCase子类。为简洁起见,我删除了setup()和tearDown方法:classViewControllerTests:XCTestCase{varviewController:T!finalfuncloadControllerWithNibName(string:String){viewController=T(nibName:string,bundle:NSBundle(forClass:ViewControllerTests.self))if#available(iOS9.0,*){viewController.loadViewIfNeeded
我正在尝试测试一段代码,我在其中检查一个帐户是否已经创建了一个key并将其存储在钥匙串(keychain)中。如果不是,它会调用启动oauth进程的方法。我的第一个想法是覆盖我想在用户没有key的情况下调用的方法。但是我使用的是结构,因此无法继承和覆盖该方法。如果我正在使用一个类,我会这样:functestInitiateOauthCalledIfSecretKeyNotFound(){classMockKeychainAccess:KeychainAccess{varinitiateAuthorizationWasCalled:Bool=falseoverrideinitiateAu