草庐IT

swift - 如何使用全局结构进行单元测试?

我很清楚在单元测试中你生成输入属性将此属性传递给您要测试的方法将结果与您的预期结果进行比较但是,如果您有一个全局结构,例如游戏经验值和游戏关卡有私有(private)setter,不能修改。当应用程序启动时,我会自动从UserDefaults加载这些数据。当您无法更改输入时,如何测试访问该全局结构的方法?例子:importUIKit//GlobalstructwithprivatedatastructGameStatus{private(set)staticvarxp:Int=0private(set)staticvarlevel:Int=0///Holdsallwinningstat

ios - 从 Storyboard加载时 XCTest 中出现 "Could not cast"错误

我正在尝试在XCTest中加载我们的自定义ViewController之一:letmyViewController=storyboard.instantiateViewControllerWithIdentifier("MyViewControllerID")as!MyCustomViewController我收到这个错误:Couldnotcastvalueoftype'MyApp.MyCustomViewController'(0x10852b720)to'MyApp.MyCustomViewController'(0x11a7330a0).我正在使用Xcode7.1.1我在网上找到

arrays - 运行 XCTests 时出现 "Ambiguous use of ' MYFUNCTION( )'"错误

我在尝试运行XCTests时遇到几个函数的错误。例如,我有一个简单的数组扩展来提取一个唯一的数组:publicextensionCollectionTypewhereGenerator.Element:Hashable{///Returnsthecollectionwithduplicatevaluesin`self`removed.varunique:[Generator.Element]{get{varseen:[Generator.Element:Bool]=[:]returnself.filter{(element)->Boolinreturnseen.updateValue(

swift - 针对不同接口(interface)实现的共享 XCTest 单元测试

我有一些接口(interface)(协议(protocol))的两个或多个实现:protocolInterface{funcmethodOne()funcmethodTwo()}我想测试每个实现,我不想重复代码。我有几个选择,但没有一个能让我满意。第一个是为ImplementationA创建测试用例并将其子类化以获得ImplementationB的测试用例:classImplementationATests:XCTestCase{varimplToTest:Interface!overridefuncsetUp(){super.setUp()implToTest=Implementat

ios - 测试私有(private)@IBOutlets 和@IBActions

我们可以将@IBOutlets和@IBAction设为私有(private)。示例:classMyViewController:UIViewController{@IBOutletprivateweakvarmyLabel:UILabel!@IBActionprivatefuncnextTapped(sender:UIButton){//Dosomething}}我们无法在类外访问此属性和方法,这对我来说是件好事。但是如何使用私有(private)channel和行动来测试类(class)呢?有没有什么方法可以在XCTestCase中测试私有(private)导出或方法,或者我必须将它

swift - viewDidLoad 后未在测试中设置 XCTest 单元测试数据响应

我正在尝试编写单元测试,目前我正在尝试测试在viewDidLoad()中接收数据的viewController,数据是在alamofire请求后设置的。问题是,在我的测试函数中,当我检查成功请求后应该填充10个元素的数组时,它是0。我检查了测试中的viewDidLoad()是否未执行,但它应该是,因为当我只是将元素添加到请求之外的另一个数组时,特定测试有效。我想,这与请求有关,到目前为止我还没有找到答案。这是代码(这个questionwithexplanation帮助我执行了viewController的viewDidLoad()):ViewController简化:classView

swift - 为 MKMapView 对象分配可访问性标识符

我正在尝试为我正在使用的应用程序配置快照,它已经在英文版本中运行,但在本地化版本中我​​不知道如何为MKMapView中map中的图钉分配可访问性标识符,有人知道怎么做吗?谢谢。 最佳答案 辅助功能标识符是将应用程序语言与XcodeUI测试分开的好方法。标识符来自UIAccessibilityIdentificationUIView已经符合。但是,NSObject和MKAnnotation都不符合该协议(protocol)。所以你必须自己设置一致性。classAnnotation:NSObject,MKAnnotation,UIAc

ios - 如何使用 expectationForPredicate 并点击一个按钮

如何在检查按钮是否启用后点击按钮?我在这里找到了这个样本,但它对我的情况不起作用。Delay/WaitinatestcaseofXcodeUItesting部分代码:letapp=XCUIApplication()letbutton=app.buttons["Tapme"]letexists=NSPredicate(format:"exists==1")expectationForPredicate(exists,evaluatedWithObject:button){button.tap()returntrue}waitForExpectationsWithTimeout(5,han

swift - 测试多个方法调用顺序

我有3个与特定类相关的方法,定义如下:classMyClass:NSObject{funcmyMethod(){methodA()methodB()methodC()}funcmethodA(){}funcmethodB(){}funcmethodC(){}}我需要测试myMethod是否按实现顺序调用了所有3个方法:methodA然后是methodB然后是methodC为了使用XCode单元测试进行测试,无论这些方法的实现如何,我都在测试用例中创建了一个子类,如下所示:classChildClass:MyClass{varmethod1CallingDate:Date?varmeth

swift - 运行 UI 测试时无法捕获 View 层次结构

通过UI测试目标运行应用时是否可以查看UI层次结构?我收到一个白屏,上面写着“无法捕获View层次结构。检查控制台日志以获取更多信息” 最佳答案 您遇到问题是因为您正在尝试调试错误进程的View层次结构。在UI测试中,有两个过程。首先是UI测试运行器,其次是您的应用程序。两者都已附加,但调试View默认处理第一个进程,即运行程序而不是应用程序。而且您不能拥有运行者的View层次结构。因此,此消息:请注意选择了哪个进程。启动UI测试后,您可以将此选择更改为应用本身并点击DebugViewHierarchy按钮,这将成功捕获您的应用:虽