草庐IT

ios - 在非测试目标中使用 XCTest

我正在围绕XCTest编写一个可重用的框架,用于对我们的几个项目进行UI测试。为此,我创建了一个CocoaTouchFramework项目,我想通过pod共享它。是否可以将XCTest包含到这样的项目中(没有额外的测试目标)?即使我在构建阶段链接了XCTest.framework,我仍收到无法找到XCTest模块的错误。 最佳答案 您应该将$(PLATFORM_DIR)/Developer/Library/Frameworks添加到框架目标的build设置中的FrameworkSearchPaths中。基本上,您不必将框架链接到XC

xcode - UI XCTest, View 中存在的元素

我是UI测试编写的新手。我想知道是否有可能知道View中存在/存在哪些元素。我想知道它们的数量和名称。我试过类似这样的方法来遍历所有元素,但它不起作用。forelementinapp.accessibilityElements!{print(element)} 最佳答案 您正在寻找XCUIElement的debugDescription方法,在您的例子中是为了获取当前可见窗口的整个层次结构:app.debugDescription引用标题注释:Providesdebugginginformationabouttheelement.T

ios - 在 iDevice 上运行 Swift XCTests

我有一个Swift应用程序,可以在我的iPad和模拟器上正常运行。该项目还有一个在模拟器上运行良好但无法在iPad或iPhone上运行的测试目标。当我尝试在任何iDevice上进行测试时,我收到链接器错误消息:Undefinedsymbolsforarchitecturearmv7:"__TFC17ExampleApp17ExampleObjectCfMS0_FT_S0_",referencedfrom:__TFC22ExampleAppTests8ExampleTests5setUpfS0_FT_T_inExampleTests.o...在我的XCTestCase中,我正在导入我的主

xcode - 在 XCode 7 中使用 unicode 字符进行的 UI XCTest 记录给出了错误的 Swift 代码

现在,在我的应用程序上记录元素时,它会返回以下内容:XCUIApplication().alerts["\U201cMyApplication\U201dWouldLiketoSendYouNotifications"].staticTexts["Notificationsmayincludealerts,sounds,andiconbadges.ThesecanbeconfiguredinSettings."].tap()这会引发编译器错误。然后我将其更改为这个,以遵循引用unicode字符的快速约定:XCUIApplication().alerts["\u{201c}MyAppli

ios - 在 XCTest 用例中处理 CLLocationManager 授权请求

我正在为一些使用核心位置的代码编写一些单元测试。我有一个函数可以根据它是否有权访问用户的位置来做不同的事情。如果我要运行该应用程序,授予它对该位置的访问权限,然后运行测试,它将能够测试对位置的授权,如果我要重置模拟器然后进行测试,它能够测试它无法访问的部分。虽然这有点管用,但它是一个巨大的痛苦,而且绝对不是自动化的。特别是因为这些测试是由CI服务器运行的,所以我需要一个更好的解决方案。那么,有没有办法从XCTest为CLLocationManager设置authorizationStatus,甚至在系统提示符下点击允许访问? 最佳答案

ios - 如果我的 UI 测试在其他本地化中不起作用,faSTLane 如何为不同的本地化截屏?

FaSTLane声称可以为我截取所有屏幕尺寸和本地化的屏幕截图。根据guide,我创建了一个这样的UI测试用例:overridefuncsetUp(){super.setUp()continueAfterFailure=falsesetupSnapshot(XCUIApplication())XCUIApplication().launch()}overridefunctearDown(){super.tearDown()}functestExample(){letapp=XCUIApplication()app.collectionViews.staticTexts["13"].sw

ios - 如何 UI 测试 UICollectionViewCell didSelect

我有一个UIViewController,它有一个子UIViewController,这个子包含一个UICollectionView并且在这个collectionView中我需要模拟一个didSelect方法或者换句话说,用户点击了UICollectionViewCell。我试着记录了一下,结果是这样的:app.buttons["Taphere"].tap()当我尝试再次运行测试时,它根本不起作用。有什么建议吗? 最佳答案 我建议您更深入地了解如何在不录制的情况下编写UI测试。录制对于基本UI来说很好,但如果您使用Collectio

swift - 在 Xcode UI 测试中编辑记录的元素

记录UI测试后,Xcode会使用记录的值生成测试代码。在Xcode9中,其中一些以蓝色突出显示并且看起来不可编辑:我希望能够复制/粘贴/修改这些值而无需手动重新键入它们。有办法做到这一点吗? 最佳答案 我想出了一个合理的解决方法,但如果有人知道在Xcode中编辑这些内容的答案,那仍然是首选。在Xcode中,按住ctrl键并单击测试文件并选择“在Finder中查看”使用您喜欢的非Xcode文本编辑器打开文件。UIRecording使用Swift内联注释来生成不可编辑的元素。它们看起来像这样:letuserButton=app/*@ST

ios - 如何在 iOS 8 中测试 http 请求?

在ruby​​中,我曾经使用记录请求的vcrgem测试http请求,因此测试不会向真实主机发送请求。iOS8的世界里有这样的东西吗?我要测试的请求确实需要记录,因为这些请求可能会在一段时间内过时并返回一些其他响应附言如果它是一些默认的Apple/iOS方法/库,比如用于一般测试的XCTest,那就太好了 最佳答案 您需要的是OHHTTPStubs或Nocilla或AMY服务器之类的东西。它们基本上都使用NSURLProtocol来拦截您的请求并允许您指定响应。我们使用了OHHTTPStubs,但选择了功能集最接近您的用例的那个。以下

swift - XCTAssert 在 Swift 中使用泛型方法

对于Swift的Dictionary结构上的泛型方法,我有两个几乎完全相同的断言,但一个成功,另一个失败。我假设这就是XCTAssert的工作原理,但不明白为什么。有谁知道为什么?如果该方法不是通用的,例如,T是String,那么两个测试都会成功。extensionDictionary{funcsafeElement(key:Key,fallback:T)->T{ifletvalue=self[key]as?T{returnvalue}returnfallback}}classDictionaryTests:XCTestCase{letdict=["foo":"bar"]functes