草庐IT

ios - 子类 XCTestCase 导致无法加载底层模块 XCTest

我正在编写一个用于测试目的的库。所以我需要在我的主要目标中而不是在我的单元测试目标中使用XCTest。目前正在使用Xcode9。当我导入XCTest时,出现错误“无法加载‘XCTest’的底层模块”。我知道主要目标不是针对框架进行链接,但是将其添加到链接框架(必需)中不会改变任何内容。我也查看了QuicksProject设置,但没有发现任何异常。我错过了什么? 最佳答案 这可能有点晚了,但你要做的是:主项目不与XCUnit框架链接。您应该为您的项目创建一个单独的测试目标(如果尚不存在),并将您的测试源文件添加到该目标。在项目导航器中

swift - 如何根据测试用例失败或跳过或通过xctest框架来触发另一个方法或任务

我正在使用xctest框架快速编写UI测试用例。我想根据测试用例通过或失败或跳过来触发另一个任务(例如截屏或)。我当前的代码如下importFoundationimportXCTestclassHomePageChromeUITests:XCTestCase{varpathStr:String=""overridefuncsetUp(){super.setUp()continueAfterFailure=falseself.launchWithUserLoggedIn()}overridefunctearDown(){super.tearDown()}functestHomePageC

ios - 为什么XCTestCase会覆盖XCTest的setup方法?

我想认为我理解继承的概念,但显然我不理解,因为我很困惑如果XCTest在其类中提供设置方法,为什么在XCTestCase中有设置方法?XCTestCase是XCTest的子类,但在阅读Apple文档后,两者之间看起来没有任何区别。importXCTest@testableimportFirstDemoclassFirstDemoTests:XCTestCase{overridefuncsetUp(){super.setUp()//Putsetupcodehere.Thismethodiscalledbeforetheinvocationofeachtestmethodintheclas

ios - 我可以在不失败的情况下进行 XCTest Expectation 吗?

我正在使用Xcode7,SwiftUIAutomation。我需要等待UIButton出现在我的主屏幕上。我为“exists==1”设置了期望值。这个UIButton有时会出现,有时不会。在我的UI测试期间,如果该元素出现,则一切正常。但是如果元素没有出现,则期望失败(我不想失败,我只需要采取另一个行动流程)我如何在测试实际失败的情况下做出决定? 最佳答案 你必须等待期望并处理它,如果这没有发生,请在括号中做其他事情。letexists=NSPredicate(format:"exists==1")expectationForPre

ios - 如何覆盖 XCTest 中的 TableView 委托(delegate)

如何为这个“成功”场景编写测试用例?if([tblView.delegaterespondsToSelector:@selector(tableView:viewForHeaderInSection:)]){...}else{...}我尝试在swift中创建以下模拟委托(delegate):classMockTableViewDelegate:NSObject,UITableViewDelegate{@objcfunctableView(tableView:UITableView,heightForHeaderInSectionsection:Int)->CGFloat{return3

ios - UIView.animateWithDuration :animations:completion: gets canceled in XCTest

我正在尝试对UIView上的扩展进行单元测试,它调用animateWithDuration:animations:completion:。不幸的是,测试用例中的所有动画都立即取消,因此完成block的isFinished参数始终为false。有没有人知道如何让动画在测试用例中工作?这是我的Playground代码:importUIKitimportXCTestextensionUIView{funcfadeOut(duration:TimeInterval,completion:((Bool)->Void)?){UIView.animate(withDuration:duration,

swift - 使用 XCTest 在 Xcode 中测试定时器

我有一个不需要超过每10秒调用一次的函数。每次调用该函数时,我都会将计时器重置为10秒。classMyClass{vartimer:Timer?funcresetTimer(){self.timer?.invalidate()self.timer=Timer.scheduledTimer(withTimeInterval:10.0,repeats:false){(timer)->Voidinself.performAction()}}funcperformAction(){//performaction,thenself.resetTimer()}}我想测试手动调用performAct

swift - XCTest:在所有平台(Xcode、SPM Mac/Linux)上不使用 Bundle 从磁盘加载文件

我正在寻找一种在不依赖于Bundle的XCTestCase中从磁盘加载文件的方法。Bundle在从Xcode(或在终端上使用xcodebuild)运行测试时运行良好,但bundle是Xcode项目的一部分,SwiftPackageManager不可用(当运行swifttest时),既不在Mac也不在Linux。有没有一种方法可以指定在所有平台上运行测试的当前目录?或者,也许有一种方法可以确定测试的位置,该方法也适用于所有平台?FileManager.default.currentDirectoryPath只返回当前执行路径(工作目录)。 最佳答案

ios - Swift XCTest 失败,因为找不到 plist 文件

我目前正在使用Swift构建一个iOS框架项目。我还有一个自己的测试构建目标。我还向测试构建目标添加了一个新的TestSettings.plist文件。我在那里存储了api调用的用户名/密码。但是XCTest现在总是失败,因为它无法加载plist文件。我已经检查过plist文件在.xctest文件夹/包中我尝试使用以下代码加载plist文件:ifletpath=NSBundle.mainBundle().pathForResource("TestSettings",ofType:"plist"){settingsDictionary=NSDictionary(contentsOfFil

ios - 为 Swift/Obj-c 项目运行 XCTest 时出错(错误 83)

尝试为我的Swift/Obj-c应用程序运行测试时出现以下错误:2016-02-0700:02:26.752xctest[3275:115122]Thebundle“MyAppTests”couldn’tbeloaded.Tryreinstallingthebundle.2016-02-0700:02:26.752xctest[3275:115122](dlopen(/Users/raphaelcruzeiro/Library/Developer/Xcode/DerivedData/MyApp-bjdolynlskqvavgryvznzbluqele/Build/Products/De