草庐IT

iOS 单元测试 : Class is implemented in both

我正在使用Swift2和Xcode7构建iOS9应用。我的应用程序在将它部署到我的手机时运行良好,但是当我运行任何单元测试时,我收到很多类的以下错误消息:Class_TtC519isimplementedinboth/Users//Library/Developer/CoreSimulator/Devices//data/Containers/Bundle/Application/.app/and/Users///DerivedData//Build/Products/Debug-iphonesimulator/.xctest/.Oneofthetwowillbeused.Whicho

ios - 无法在 Xcode 的单元测试目标中访问 swift 文件

将swift文件添加到测试目标会起作用,但这不是最好的方法。我的问题是我无法访问Swift文件,而Objective-C文件可以访问。我已经检查了产品模块名称并将配置文件设置为与测试目标的项目文件相同。即使删除了测试目标并重新添加,但仍然遇到“在SlideViewController中使用未声明的类型”。谁能帮我解决这个问题? 最佳答案 默认情况下,您将无法从单元测试目标访问内部类。苹果docs在用swift编写测试时说你需要采取两个步骤来解决这个问题:将ENABLE_TESTABILITYbuild设置设置为YES。将@testa

ios - "XXX-Swift.h"测试项目中找不到文件

我正在尝试调用测试项目中XCTestCase子类方法中的NSObject子类方法,比方说“主”项目.主项目的NSObject子类导入“XXX-Swift.h”头文件(我正在混合Swift和Objective-C代码).当我运行主项目时一切正常,但是当我运行调用该子类对象的测试时,我收到一条错误消息,指出未找到导入中的Swift头文件。我想我在测试目标中遗漏了一些设置,但我找不到哪个...我应该检查什么?或者我应该怎么做才能解决这个问题? 最佳答案 转到XcodeProject>BuildSettings并输入“headername”

ios - XCTest UI 测试 UIElements 大小

我正在XCode中使用XCTest测试我的应用。有人有示例如何测试UIElement大小吗?tableView中单元格的高度,或tableView单元格中标签的高度。任何示例将不胜感激。 最佳答案 使用XCUIElementAttributesXCUIElement上的协议(protocol)以访问框架。这将返回一个标准的CGRect,您可以查询它的大小和来源。letheight=app.buttons.element.frame.size.heightletwidth=app.buttons.element.frame.size.

ios - 如何测试 viewController 的 deinit

我想测试是否删除了ViewController的deinit中的所有键值观察器。在测试类中我定义了以下方法来启动ViewController生命周期funcstartLifecycle(){_=viewController.view}在我的测试方法中,我试图通过简单地将nil分配给我的ViewController实例来调用deinittestViewController=nilXCTAssertforstuff...但是当我执行测试时,deinit没有被调用。我在我的VC代码中没有看到明显的保留周期,更重要的是当我在我的应用程序中运行代码时,而不是在测试环境中,deinit被调用所以它

iOS 测试因 waitForExpectationsWithTimeout 而崩溃

waitForExpectation测试随机崩溃,总是在我满足dispatch_after中的期望时发生。它发生在objective-c和swift中。完全随机,有时有效有时无效。有人有什么主意吗?(我在MacMini上使用CMD+U运行它,但我也尝试使用MBPRetina,结果相同)示例代码:functestBarcodeNotFound(){letexp=self.expectationWithDescription("storeloading")OHHTTPStubs.stubRequestsPassingTest({(request:NSURLRequest!)->Boolin

objective-c - 在 XCTestCase 中使用 URL 方案

我想运行一个等待浏览器响应的测试。测试目标有一个Info.plist,我可以在其中注册自定义URL方案。但是那些从来没有被调用过。我知道测试目标不是真正的应用程序。有办法吗?编辑(为了赏金):我想为调用openUrl("tel://"+somephonenumber)的类编写集成测试。我如何在XCTestCase中订阅此URL方案? 最佳答案 问题已重新标记为OSX,因此我的回答不再有效原始答案这是不可能的。基本原因是测试连接到一个正在运行的应用程序实例,它们无法控制设备,它们作为应用程序的一部分运行。您或许可以打开该URL,但您将

iOS,通过代码锁定设备

出于测试目的(制作本地通知的屏幕截图),我需要能够从代码(测试代码或应用程序代码)锁定设备(模拟器)。我从这里(GSEventLockDevice)查看了几个答案,但它们已经很老了,对我不起作用 最佳答案 XCUIDevice中有一个私有(private)方法,因此您可以使用它来锁定设备/模拟器。Swift3的示例:importXCTestclassLockTests:XCTestCase{functestExample(){XCUIDevice.shared().perform(NSSelectorFromString("pres

iOS,通过代码锁定设备

出于测试目的(制作本地通知的屏幕截图),我需要能够从代码(测试代码或应用程序代码)锁定设备(模拟器)。我从这里(GSEventLockDevice)查看了几个答案,但它们已经很老了,对我不起作用 最佳答案 XCUIDevice中有一个私有(private)方法,因此您可以使用它来锁定设备/模拟器。Swift3的示例:importXCTestclassLockTests:XCTestCase{functestExample(){XCUIDevice.shared().perform(NSSelectorFromString("pres

ios - iOS 中的 DBL_EPSILON 问题

我正在使用这个-#defineIS_IPHONE_5(fabs((double)[[UIScreenmainScreen]bounds].size.height-(double)568)我项目中的宏。我已经在项目的.pch文件中声明了这个宏当目标是我的项目时它工作,但当我尝试使用xctest运行测试用例时它不工作。构建总是失败并出现以下错误-undeclaredidentifier'DBL_EPSILON'我已经在我的appName.pch中声明了它,并将那个.pch导入到我的文本案例包.pch中当我导入#import时.这解决了我的问题。我的问题是为什么在测试包中需要这个导入?因为在