我正在使用Swift和XCTest为我的应用程序编写UI测试,我必须摇动设备才能收到通知,您能告诉我如何在代码中生成摇动手势吗? 最佳答案 解决方案非常简单。您需要做的就是发送“com.apple.UIKit.SimulatorShake”Darwin通知。请参阅下面的示例代码:SimulatorShaker.h#import@interfaceSimulatorShaker:NSObject+(void)performShake;@endSimulatorShaker.m#import"SimulatorShaker.h"#imp
我想知道是否有一种方法可以在XCtesting时使用unit来指定一个常量变量,该变量不会在单独的测试用例之间被拆除?我意识到单元测试的一般最佳实践是尽可能保持测试自包含,但在我目前的情况下,如果我能够做到这一点并在测试用例之间保持常量变量,这将使测试执行得更快。目前,我调用的任何类型的初始化函数overrideinit(){super.init()}给我留下EXC_BAD_INSTRUCTION错误。如果我不能在XCTestCase中使用init(),是否可以使用其他解决方法? 最佳答案 尝试将变量移到XCTestCase类之外。
我有以下单元测试:letapiService=FreeApiService(httpClient:httpClient)apiService.connect(){(status,error)inXCTAssertTrue(status)XCTAssertNil(error)}实际的功能是这样的:typealiasfreeConnectCompleteClosure=(_status:Bool,_error:ApiServiceError?)->VoidclassFreeApiService:FreeApiServiceProtocol{funcconnect(complete:@esc
我有以下代码(试图避免隐式展开):classMyTests:XCTestCase{varviewController:ViewController}但我收到以下错误:Class'MyTests'hasnoinitializers我解决了这个问题:classMyTests:XCTestCase{varviewController:ViewControlleroverrideinit(){self.viewController=ViewController()super.init()}}在XCTest类中使用init()会有问题吗?我正在使用Swift4、Xcode9.2。
我有一个带有单元测试的Xcode项目。产品Tests.xctest是红色的。单元测试构建并作为调试版本运行。为什么显示为红色?当我查看产品文件夹并深入查看包时,我看到了调试版本的unix可执行测试,但没有发布版本。如果我在构建测试发布的方案中设置它,则构建过程失败并显示加载模块失败。我想这可能是因为发布版本没有构建,但也不确定为什么会这样。为什么我把run和test都设置为release却找不到模块?它构建并运行以发布,但不会构建测试。想法?更新:我创建了一个测试应用程序,但问题仍然存在: 最佳答案 这是一个虚假的错误。多年来,Xc
我希望能够验证子字符串是否出现在UI测试的导航栏中。例如,如果导航栏标题是“RentProperties”,那么我可以这样匹配它:XCTAssert(XCUIApplication().staticTexts["RentProperties"].exists)但是,这有两个问题:如果文本不在导航栏中,它仍会匹配它进行精确匹配,而我希望能够匹配诸如“Rent”之类的子字符串如何做到这一点? 最佳答案 要匹配子串Rent,可以使用下面的代码:XCUIApplication().staticTexts.matchingPredicate(
我正在尝试将Swift中的新测试添加到当前使用ObjectiveC编写的现有KIF测试包中。设置:Xcode6.4椰子足类0.37.2Podfile使用最新版本的KIF我已经设置了Swift桥接header,导入了KIF和我项目的其他相关部分,以便Swift可以使用它们。我已经将事情简化为一个简单的测试用例,在这个阶段甚至不使用KIF:importFoundationclassMyFirstTest:KIFTestCase{functestOne(){NSLog("Done")}}测试包构建良好,但是当我运行时我得到:2015-07-0314:52:32.620MyApp[1104:2
我是Swift的新手,目前正在尝试编写单元测试(使用XCTest)来测试以下功能:funclogin(email:String,password:String){Auth.auth().signIn(withEmail:email,password:password){(user,error)iniflet_error=error{print(_error.localizedDescription)}else{self.performSegue(identifier:"loginSeg")}}}我的研究表明我需要使用XCTestExpectation功能,因为XCTest默认同步执行,
我知道@testableimportMyModule提供从“测试”(使用“testTarget”构建)模块MyModuleTests探索MyModule的非公共(public)成员的能力。我的“非测试”模块需要相同的功能。不在生产中,只是在Debug模式下。我的问题是:你知道怎么做吗?相关的(我认为,更难的问题):@testable背后究竟发生了什么魔法? 最佳答案 要回答您的问题,出于调试目的,您实际上可以使用它。假设您有一个工作区MyAwesomeWkspace和一个位于MyAwesomeProject中的项目。现在,创建一个名
我正在使用XCTestUI测试框架来检查表格View中的行。在我的测试中,我需要在给定索引的情况下验证TableView行中文本的存在。我正在考虑使用tableRows.elementBoundByIndex方法,但它没有返回任何内容。调用tableRows.count返回的行数为零。该表存在并已填充,因为我可以成功查询行内的文本:XCTAssertEqual(app.tables.staticTexts["CuteAlpaca"].exists)在XCTestUI测试中,如何根据给定的索引来验证行中是否存在文本? 最佳答案 事实证