Tag: xctest

调用时XCTest失败

我有一些代码,在某些时候调用[NSBundle mainBundle] ,主要是读取/设置首选项。 当我unit testing的方法,testing失败,因为testing的mainBundle不包含该文件。 这是一个已知的问题 ,苹果不会因为他们认为它不是一个bug而修复 : 他们答复的要点是XCTest通过返回它自己的主包而不是testing目标包来正常工作。 以前我们的代码是在NSBundle的+mainBundle类方法上使用类别重写来解决这个问题。 但是这是很危险的,因为覆盖类别中现有方法的行为是未定义的 。 如果在类别中声明的方法的名称与原始类中的方法相同,或者在同一个类(甚至是超类)上的另一个类中的方法相同,则行为是不确定的运行。 实际上Xcode提醒你: 类正在实现一个方法,也将由其主要类实现 那么,解决这个问题的正确方法是什么呢?

addUIInterruptionMonitor(withDescription:handler :)不能在iOS 10或9上使用

以下testing可以在iOS 11上正常工作。它将取消提醒使用位置服务的权限,然后放大地图中的位置。 在iOS 10或9上,它没有这个,testing仍然成功 func testExample() { let app = XCUIApplication() var handled = false var appeared = false let token = addUIInterruptionMonitor(withDescription: "Location") { (alert) -> Bool in appeared = true let allow = alert.buttons["Allow"] if allow.exists { allow.tap() handled = true return true } return false } // Interruption won't happen without some […]

testing包无法加载,因为一个意想不到的错误

最近我开始为一个旧的静态库编写testing用例。 我已经加载库到Xcode 5,由于静态库是旧的,我不得不手动添加TestProject与testing目标。 当我尝试“产品 – >testing”,它启动模拟器和控制台显示以下错误 无法加载/xxx/xxx/xxx/StaticLibTest.xctest上的testing包,因为发生了意外错误:错误域= NSCocoaErrorDomain代码= 3587“包”StaticLibTest.xctest“无法加载,因为它已损坏或丢失必要的资源“。 (dlopen_preflight(/ xxx / xxx / xxx / debug- 我不知道为什么会出现这个错误。 任何帮助指出正确的方向将非常感激。

在iOS 7.0模拟器上以编程方式授予对NAB的访问权限

是否有可能以编程方式授予在iOS 7.0 Simulator上的原生地址簿(NAB)访问权限? 我正在写xctestunit testing,需要写访问 NAB。 unit testing在iOS 7.0模拟器上运行,是持续集成过程的一部分,不涉及任何用户交互。 目前,除非用户通过“TestApp”明确授予访问权限,否则将拒绝访问NAB。

如何加快Xcode中的UItesting用例?

由于Xcode 7,我们有一个很好的用于UItesting的API。 大部分我都很满意。 唯一的问题是与速度有关。 一开始一个普通的UItesting用例(约15个动作)跑了大约25秒 。 然后我完全嘲笑networking。 现在需要20秒 。 考虑到时间只能通过animation和发射时间(1秒甚至更less)来实现,所以我认为,必须有一种方法加快速度。

不能将主要的Swift类导入testing目标?

我正在testing我的iOS应用程序中的类。 我试图通过添加import Pickle到我的PickleTests.swifttesting文件的顶部,将我的应用程序中包含所有类的目标Pickle导入到我的testing目标PickleTests ,但是我不断收到错误。 我收到的错误是:“无法导入桥接头(桥接头的path)”(桥接头的path显示在错误,而不是括号)。 我已经尝试在我的Pickle目标的生成设置中的“定义模块”设置为“是”,但它仍然不起作用。 我也在构build设置中validation了它具有桥接头文件的正确path。 任何关于如何设置我的testing的想法? 我在Xcode 6.3.2上。 请让我知道如果你需要任何额外的信息。 在新标签中打开图片,看看它是否更大。

在Xcode 6中使用XCTest进行sortingunit testing

我想知道是否有任何方式告诉Xcode以指定的顺序运行unit testing。 我的意思是不在同一个XCTestCase类文件中,而是在所有的类文件之间。 例如,我想在运行SitchozrSDKMessageTest之前运行SitchozrSDKSessionTest。 我查看了堆栈或Apple文档上的几个线程,但是我没有find有用的东西。 谢谢你的帮助。

UItesting用例不显示代码覆盖率

我有一些使用XCTestCase类写的testing,我想计算代码覆盖率。 对于常规testing,它在我的机器人中很好地显示,但对于UItesting总是0%。 最简单的testing: import XCTest class FAQUITests: XCTestCase { let app = XCUIApplication() override func setUp() { super.setUp() app.launch() } func openFaqView() { app.navigationBars["NavigationBar"].buttons["FAQ"].tap() } func testFaq() { openFaqView() app.tables.cells.elementBoundByIndex(0).tap() } } 这肯定应该显示一些testing覆盖,但事实并非如此。 我在我的bot代码覆盖范围内启用: 结果: 仍然是0%。 Xcode 7.2(7C68) 编辑:示例项目: https://Kettu@bitbucket.org/Kettu/so_34718699.git

无法访问XCTestCase对象中的AppDelegate(或任何引用它的东西)

我试图在我的swift iOS应用程序上开始unit testing,但已经跑到总路障。 我似乎无法访问任何使用我的appDelegate。 我的appDelegate有一个UserController对象,它存储和pipe理login的用户和它的各种数据。 为了简化调用userController我创build了一个NSObject的自定义子类,这是我的所有模型类的子类。 它有它 let userController : UserController = (UIApplication.sharedApplication().delegate as! AppDelegate).userController 每当我尝试和testing一个子类化模型时,这行会导致一个SIGABRTexception。 无法将types“MyProject.AppDelegate”的值转换为“MyProjectionTests.AppDelegate”。 我试图从testing目标中删除AppDelegate,但是这样就给我AppDelegate是未定义的。 我已经尝试添加import MyProject到testing文件的顶部,但也没有工作。 我看到了另外两个解决scheme: 使应用程序委托function私人 – 我真的不喜欢做这样的事情。 如果我不得不为了testing而更改我的代码,那么testing的意义何在? 实现一个testing应用程序的委托,并使用它 – 如果我不testing项目中的什么,testing的重点又是什么。 有没有人有办法解决吗。 Swift的unit testing被certificate是令人头痛的事情,因为RSpec在rails上有多容易

unit testingparsing框架iOS

我正在尝试为使用Parse后端框架的iOS应用程序编写unit testing,而且在编写成功的unit testing之后,大量的实验似乎都失败了。 我在testingasynchronous代码( 在iOS中testingunit testing中的asynchronous调用 )和testingnetworking调用方面发现了一些post,但是还没有find用asynchronouscallbacktesting对Parse后端调用的方法。 举个例子,任何人都可以build议我如何testing下面这行代码: [PFUser saveUser:userModelMock withBlock:^(BOOL success, NSError *error) { }]; 我正在使用OCMock和XCTest框架。 任何帮助将非常感激。 *编辑*这是我迄今为止,但似乎失败 – (void)testSaveUser { id userModelMock = [OCMockObject niceMockForClass:[UserModel class]]; id userControllerMock = [OCMockObject niceMockForClass:[self.userController class]]; [[userModelMock expect] saveInBackgroundWithBlock:[OCMArg any]]; [[userControllerMock stub] saveUser:userModelMock withBlock:[OCMArg any]]; [userModelMock verify]; }