Tag: xctest

用simctl运行XCTest包

我有一个XCTest包,我可以通过使用simctl在模拟器上运行xcode。 我正在使用带有以下环境variables的iPhone 6 iOS 9.1模拟器: export SIMCTL_CHILD_TestBundleLocation="/Users/User/ios_app/DerivedData/primus/Build/Products/Debug-iphonesimulator/Tests.xctest" export SIMCTL_CHILD_XCInjectBundle="/Users/User/ios_app/DerivedData/primus/Build/Products/Debug-iphonesimulator/Tests.xctest" export SIMCTL_CHILD_XCInjectBundleInto="/Users/User/ios_app/DerivedData/primus/Build/Products/Debug-iphonesimulator/ios_app.app/ios_app" export SIMCTL_CHILD_XCTestConfigurationFilePath="/Users/User/ios_app/DerivedData/primus/Build/Products/Debug-iphonesimulator/Tests.xctest/Tests-7025D700-AA6C-4343-9C7A-92F9CC3A1C42.xctestconfiguration" export SIMCTL_CHILD_DYLD_LIBRARY_PATH="/Users/User/ios_app/DerivedData/primus/Build/Products/Debug-iphonesimulator:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks" export SIMCTL_CHILD_DYLD_FRAMEWORK_PATH="/Users/User/ios_app/DerivedData/primus/Build/Products/Debug-iphonesimulator:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks" 该应用程序已经安装在模拟器上,模拟器正在运行,我运行: xcrun simctl launch booted uk.co.company.ios.app -NSTreatUnknownArgumentsAsOpen NO -ApplePersistenceIgnoreState YES -XCTest All 应用程序启动,从模拟器日志中我可以看到,XCTest包加载,但testing不运行。 我注销了似乎停止的地方,并有一个私人方法_checkForTestManager ,更具体地说_checkManagerForDaemonStateAndConnectIfAvailable 。 从我可以告诉XCTest试图连接到testmanagerd但失败。 所以我试着在模拟器上用kickstarting testmanagerd : xcrun simctl spawn booted launchctl kickstart system/com.apple.testmanagerd 但是这似乎对运行的testing没有影响,但是我在模拟器日志中看到了一些额外的输出: testmanagerd[41610]: Received new test session connection (-[XCTestManager listener:shouldAcceptNewConnection:]) testmanagerd[41610]: Initial […]

XCTest和CoreData

我想通过使用XCTest类和方法在Xcode 5中unit testing我的模型。 因为我的模型类inheritance了managedObject ,所以我不能只实例化(alloc / init)它们并调用getter和setter或者我需要testing的方法。 我需要通过使用NSEntityDescription创build它们并使用managedObjectContext 。 这就是我得到麻烦的一点。 我不知道在哪里以及如何为unit testing创​​buildmanagedObjectContext目的。 如果有人有一些build议或代码的例子,这将是非常有益的。 谢谢。

XCUIElement – 获取图像值

我有一个types为XCUIElement和类XCUIElement 。 像这样的东西: var image = app.descendantsMatchingType(.Image).elementAtIndex(0) 有没有一种方法可以提取实际的图像,所以我可以将它与另一个图像进行比较? 我已经试过调整value方法,但它返回一个string。 将其转换为UIImage总是失败。

每次运行unit testing时如何运行全新的应用程序安装?

我已经为我的应用程序设置了一些XCTestunit testing,并希望每次运行testing时都要运行全新的应用程序安装。 目前,当我运行后续testing时,它会在之前运行的同一个应用程序中运行testing,其中有很多状态信息已经被以前的testing所改变。 有没有办法指出,当你运行unit testing,它应该运行在你的应用程序的新版本的testing?

在XCTest UItesting中复制拉来刷新

我正在尝试使用Xcode 7(testing版3)中新的Xcode UItesting框架来复制UITableView刷新操作, 我目前的做法是从桌子上拖动到我能find的桌子下面的任何元素。 这工作时有一个像UIToolbar或UITabBar表下面的固定项目我宁愿不依赖于UITabBar或UIToolbar但我不能找出一种方法来执行拉动刷新/拖动动作,而不使用该方法XCUIElement 。 func pressForDuration(duration: NSTimeInterval, thenDragToElement otherElement: XCUIElement) 但是,当我没有工具栏/选项卡,并尝试拖动使用单元格失败 这是我的代码的相关部分: func testRefresh() { //For testing cell for _ in 0…9 { addCell() } refreshTable() } func refreshTable(var tbl: XCUIElement? = nil) { let app = XCUIApplication() if tbl == nil { let tables = app.tables if tables.count > 0 { tbl […]

如何编写UItesting覆盖在Xcode的Facebooklogin?

我想在Xcode中编写一个用FBDSKLoginKit进行login的UItesting。 然而, Facebook的iOS SDK使用SFSafariViewController呈现给用户来validation她,不幸的是, 没有办法如何在Xcode 7的UItesting中与SFSafariViewController进行交互 。 任何想法如何testingFacebooklogin而不与SFSafariViewController交互?

无法通过xcodebuild从命令行执行testing

我正在尝试使用iOStesting用例的命令行构build和运行testing用例。 我已经给了以下命令: xcodebuild -target AppEngineTests -configuration Debug -sdk iphonesimulator TEST_AFTER_BUILD=YES clean build 它构build的应用程序,但testing用例不运行。 有人可以帮忙吗? 谢谢

加载XCTest时出错,找不到合适的图像。

我最近更新了我的Xcode,并开始有这个错误。 2014-11-03 15:03:54.222 App[13141:60b] Error loading /private/var/mobile/Applications/677127BD-5230-4D5F-B70E-AF728439D34B/tmp/AppTests.xctest/AppTests: dlopen(/private/var/mobile/Applications/677127BD-5230-4D5F-B70E-AF728439D34B/tmp/AppTests.xctest/AppTests, 262): no suitable image found. Did find: /private/var/mobile/Applications/677127BD-5230-4D5F-B70E-AF728439D34B/tmp/AppTests.xctest/AppTests: code signature invalid for '/private/var/mobile/Applications/677127BD-5230-4D5F-B70E-AF728439D34B/tmp/AppTests.xctest/AppTests' DevToolsBundleInjection: Error loading bundle '/private/var/mobile/Applications/677127BD-5230-4D5F-B70E-AF728439D34B/tmp/AppTests.xctest' 我照常进行Googlesearch。 但我还没有find任何解决scheme。 来源我看了,试图解决我的问题是, http://marcschwieterman.com/blog/testing-in-the-sandbox/ 什么时候发生? 它只显示这个错误,如果我在设备上运行unitesting。 在模拟器上,它按预期工作。 从正常目标运行应用程序不会显示此错误。 运行Uni Test应用程序时出现错误时不会崩溃。 它只是无法加载xctests。 任何人有类似的问题? 并设法解决它?

为什么我应该使用单独的testing主机来运行XCTests,我应该怎么做?

我曾经问过一个与XCTests有关的问题 。 在其中一个答案中,我被告知,在运行unit testing时(至less在iOS开发中),使用单独的testing主机(除主应用程序之外)是常见的做法。 我试图find一些关于它的消息来源,但我不能 我明白,这可能是一个最好的做法,所以我真的很想了解它。 有人可以向我解释为什么它很重要,我从中得到什么好处,我应该怎么做呢? 链接到一些文章解释这个问题将不胜感激。 PS我明白,我需要testing的特殊环境(假内存数据库,模拟networking层等),但直到现在我设法实现它没有一个单独的testing主机,只使用我的主要应用程序,如Xcodebuild议默认。 但我相信可能有更好的办法。 而且我知道Xcode暗示的默认值并不总是那么好。

辛格尔顿不使用XCTests – iOS

我正在为我的一个实用方法写unit testing。 此实用程序方法在内部根据单例对象上设置的属性获取一些值。 在我的unit testing中,在我调用这个实用程序方法之前,我正在设置会话对象值并打印以确认它已被设置: – (void)testMyMethod { [MySession sharedSession].isTesting = true; NSLog(@"isTesting = %d", [MySession sharedSession].isTesting); // prints 1 [myClassObj myMethod]; } 但是在我的myMethod , isTesting从来没有通过true检查: – (void)myMethod { if ([MySession sharedSession].isTesting == true) { // this condition is always failing … do something … } } 我也在testing和实际方法中都打印了单例对象,并validation了这两个对象都指向相同的内存位置。 任何人都有任何线索为什么这样发生。 任何方向/指针/指导,高度赞赏!