我有一个库实现自定义UIControl与一个方法,将调用.valueChanged事件时调用。 我想testing该行为的方法。 我的自定义控件: class MyControl: UIControl { func fire() { sendActions(for: .valueChanged) } } 和testing: import XCTest class ControlEventObserver: NSObject { var expectation: XCTestExpectation! init(expectation anExpectation: XCTestExpectation) { expectation = anExpectation } func observe() { expectation.fulfill() } } class Tests: XCTestCase { func test() { let myExpectation = expectation(description: "event fired") let observer = ControlEventObserver(expectation: […]
我正在尝试在swift中进行unit testing。 我定义了我的testing用例类,如下所示: import XCTest import CoreData import UIKit class LazyLoadingCheckTests: XCTestCase { var appDelegate : AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate override func setUp() { super.setUp() // Put setup code here. This method is called before the invocation of each test method in the class. } override func tearDown() { // Put teardown code here. […]
安装程序 我已经使用CocoaPods成功将GoogleMaps SDK集成到我的Swift 2项目中。 我的设置几乎是Ray Wenderlich关于这个主题的教程所build议的。 我可以find的唯一区别是,我必须添加此行到AppDelegate: import UIKit import GoogleMaps // <- THIS LINE @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { … …为了使用框架的类。 本教程build议导入: #import <GoogleMaps/GoogleMaps.h> 而不是桥头。 该应用程序工作没有问题。 问题: 当我试图运行由Xcode自动生成的testing目标时,我得到错误: 没有这样的模块“GoogleMaps” 指向上面的AppDelegate中的swift import语句。 所以,我决定切换到教程中的方式:我在AppDelegate.swift中注释掉import GoogleMaps的行,并向桥接头添加一个Objective-C样式的导入语句。 但是 ,我不能正确的做到: 如果我使用: #import <GoogleMaps/GoogleMaps.h>或#import "GoogleMaps/GoogleMaps.h" ,它会给我: 使用未parsing的标识符“GMServices” 在构build应用程序目标时在AppDelegate.swift。 如果我使用#import "GoogleMaps.h" ,它会给我: 'GoogleMaps.h':文件未find 在桥头。 我已经尝试过这个答案的解决scheme,但结果是(令人费解)相同…? 接下来,我检查了两个目标(应用程序和testing)的Build Settings / Search Paths […]
我正在编写XCTest应用程序testing,通过在UIApplication rootViewController上调用presentViewController来testing一些UIViewControllers 。 这工作正常,除权限对话框。 一些UIViewControllers为相机或麦克风访问等东西创build系统popup权限对话框。 我不知道如何解雇他们。 如果这是一个UItesting,我可以使用addUIInterruptionMonitorWithDescription并tap警报。 但是,我不知道如何使这项工作。 应用程序可以testing访问UItestingfunction吗?
我构build了一组XCTestCase方法来运行我的核心数据模型中的代码。 我打算从其他testing方法中调用一些testing方法,这样我可以看到不同的数据组合,同时保持代码最小。 我无法想象为什么这不起作用,但我想知道世界在想什么,这是否被认为是好的做法。 以下是它的样子: @interface sessionTests : XCTestCase @property (strong) Model *model; @end – (void)setUp { [super setUp]; _model = [[Model alloc]init]; } – (void) testValue1 { _model.value = 1; XCTAssertTrue(_model.value == 1, @"model.value is not 1"); } – (void) testValue2 { _model.value = 2; XCTAssertTrue(_model.value == 2, @"model.value is not 2"); } – (void) […]
我曾经问过一个与XCTests有关的问题 。 在其中一个答案中,我被告知,在运行unit testing时(至less在iOS开发中),使用单独的testing目标(除主应用程序之外)是一种常见的做法。 我试图find一些关于它的消息来源,但我不能 我明白,这可能是一个最好的做法,所以我真的很想了解它。 有人可以向我解释为什么它很重要,我从中得到什么好处,我应该怎么做呢? 链接到一些文章解释这个问题将不胜感激。 PS我明白,我需要testing的特殊环境(假内存数据库,模拟networking层等),但直到现在我设法实现它没有一个单独的testing主机。 但我相信可能有更好的办法。
我在iPhone的Xcode Swift应用程序中做了一个用户界面testing类,它在屏幕上作用并按下一些button。 但是,构build失败,因为一些库(SwiftyUserDefaults.swift和SwiftyJSON.swift)不包括在Test类的目标 – 我得到的错误: 当我在testing类的编译资源中包含类SwiftyJSON.swift时,像这样: 我得到另一个错误,这基本上意味着我包含了两次相同的文件 : 我该怎么办? 如何将库包含在UI Test类的目标中?
当我在Swift中使用XCTest进行unit testing时,它们在代码覆盖被closures时运行正常。 但是,一旦我尝试启用代码覆盖,我有一个失败的build设/testing与4类给出以下错误信息: 命令失败,由于信号:分割错误:11 。
由于更新到Xcode 5.1,我试图运行unit testing(XCTestSuite)时遇到了错误。 当我运行单独的testing方法时,在控制台上Error while reading test scope bundle时出现Error while reading test scope bundle并且没有结果。 当我运行testing文件的完整实现时,我看到: Unable to get entitlements for client task. Error: Error Domain=NSPOSIXErrorDomain Code=-1 "The operation couldn't be completed. (POSIX error -1 – Unknown error: -1)" 然后testing似乎开始按预期运行。
我正在使用XCTestExpectationtestingasynchronous调用。 在给定的1秒超时之前执行completionHandler时,以下代码工作(testing成功)。 func test__async_call() { // prepare let sut = ClassToTest() let expectation: XCTestExpectation = self.expectationWithDescription(nil) // test sut.methodToTestWithCompletionHandler() { () -> () in expectation.fulfill() } // verify self.waitForExpectationsWithTimeout(1, handler: nil) } 然而,如果completionHandler没有被调用,所以期望没有被满足,而不是在调用waitForExpectationsWithTimeout时得到一个testing失败,我得到一个EXC_BAD_ACCESS,这是不是很方便,因为这使得不可能看到整个testing套件的结果。 我怎样才能避免这种情况,并得到正常的testing失败?