问题标签 [xctest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - XCTest 如何执行 segue 呈现模态视图并测试presentedViewController
我试图测试一个可以呈现视图控制器的 segue。但是,总是失败。如何等待segue完成?请协助。
ios - 在 iOS 单元测试中模拟 NSHTTPURLRequest 和 NSHTTPURLResponse
我正在iOS中开发一个对服务器进行HTTP调用的框架。我想编写单元测试来测试API。我想模拟服务器调用,而不是实际进行真正的服务器调用。任何人都可以帮助我进行示例单元测试进行模拟服务器调用。我们如何设置期望并返回手工构建的 url 响应。我使用 XCTest 框架进行单元测试,使用 OCMock 模拟对象。
objective-c - OCMockObserver:观察到意外通知
通知管理器.h
通知管理器.m
单元测试:
我得到错误:
OCMockObserver:观察到意外通知:NSConcreteNotification 0xfbbad70 {name = TestNotification; userInfo = { TestData = "一些数据"; }}
如果我发布没有 userInfo 对象的通知(只是 nil),则测试有效。有人可以解释为什么吗?
objective-c - 数组速记表达式和方法调用的 XCTAssert 语法错误
所以我正在使用 XCTest 进行单元测试,并且遇到了一个小问题。
当我编写带有速记数组声明和方法调用的 XCTAssert 语句时,Xcode 中会出现语法错误:
在 Xcode 编译错误中:
但是,如果我在表达式周围添加更多括号,它将起作用:
这与我的某些语法不允许传递给宏有关吗?(假设 XCTAssert 是一个宏)
objective-c - XCTest 测试方法中的 KVO addObserver 逻辑崩溃
我在结合 XCTest 使用键值观察逻辑时遇到了一些困难(原始代码正在通过测试覆盖率进行改造)。该逻辑在正常(非测试)上下文中运行良好,但每次在测试上下文中都会出现异常。
逻辑的要点是——我有两个类,分别称为 Service 和 Helper。脚手架的实现是:
Helper 是 Service 中某个属性的观察者。在我的正常运行时逻辑的上下文中,我通过调用 Service 实例方法来做到这一点addSvcObserver
:
服务.m:
Helper 遵循 KVO 观察模式,因此:
助手.m:
非常直截了当,我不会进入监视属性更改的逻辑,因为问题发生在此之前 - 如果我有如下代码摘录:
在非测试用例中没有问题(即,这个和相关的 KVO 逻辑按预期工作)。但是,addSvcObserver
在 XCTest 测试方法的上下文中执行调用时会立即产生拒绝访问异常。我已经包含了一个异常“全部中断”断点——问题似乎发生objc_registerClassPair
在addObserver:forKeyPath:options:context:
。测试目标明确禁用了 ARC,因为它提供测试覆盖的项目(目标是 iOS7)由于遗留原因是非 ARC;这似乎不会对其他测试造成任何问题。
想法?
objective-c - 在 Xcode 中扩展 XCTestCase 类
在为我当前的 Objective-C 项目编写测试用例时,我注意到我的测试用例的子集 A 中有很多常见的功能和类变量。因此,我想将 XCTestCase 类子类化一次,让我们调用新类 ExtendedXCTestCase,并让该类包含所有提到的类变量和常用方法,然后简单地让子集 A 每个子类为 ExtendedXCTestCase 类,以允许无需重复代码即可访问常用方法和变量。
虽然这显然比看起来更难,因为我不断得到
如果创建一个新的测试目标,然后在该目标内创建 ExtendedXCTestCase 类,然后创建一个新的测试类,它是 ExtendedXCTestCase 的子类而不是 XCTestCase,即使没有向生成的两个添加任何代码,也足以导致问题文件,除了 ExtendedXCTestCase 导入(通过 Xcode 创建时)。
我试着在伟大的互联网上搜索了一段时间,但一点运气都没有。
一个简单的解决方法是创建一个包含公共变量和方法的实用程序类,并简单地让每个测试用例子类化 XCTestCase,然后只使用该对象。但是我希望能够继承 XCTestCase,这是不可能的,还是我错过了一些重要的东西?
任何帮助表示赞赏,在此先感谢。
新目标的完整错误记录如下:
ld /Users/Arni/Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build/Products/Debug/TODO\ Tests.xctest/Contents/MacOS/TODO\ 测试正常 x86_64
cd /Users/Arni/Desktop/TODO_List_project/TODO_List
setenv MACOSX_DEPLOYMENT_TARGET 10.9
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -bundle -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ MacOSX10.9.sdk -L/Users/Arni/Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build/Products/Debug -F/Users/Arni/Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build/ Products/Debug -F/Applications/Xcode.app/Contents/Developer/Library/Frameworks -F/Applications/Xcode.app/Contents/Developer/Library/Frameworks -filelist /Users/Arni/Library/Developer/Xcode/DerivedData/ TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build/Intermediates/TODO_List.build/Debug/TODO\Tests.build/Objects-normal/x86_64/TODO\Tests.LinkFileList-mmacosx-version-min=10。9 -bundle_loader /Users/Arni/Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build/Products/Debug/TODO_List.app/Contents/MacOS/TODO_List -framework XCTest -fobjc-arc -fobjc-link-runtime -framework XCTest -Xlinker -dependency_info -Xlinker /Users/Arni/Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build/Intermediates/TODO_List.build/Debug/TODO\Tests.build/Objects-normal/x86_64/TODO\Tests_dependency_info。 dat -o /Users/Arni/Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build/Products/Debug/TODO\Tests.xctest/Contents/MacOS/TODO\Testsapp/Contents/MacOS/TODO_List -framework XCTest -fobjc-arc -fobjc-link-runtime -framework XCTest -Xlinker -dependency_info -Xlinker /Users/Arni/Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build/Intermediates/ TODO_List.build/Debug/TODO\ Tests.build/Objects-normal/x86_64/TODO\ Tests_dependency_info.dat -o /Users/Arni/Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build/Products/Debug/TODO\ Tests.xctest/Contents/MacOS/TODO\ 测试app/Contents/MacOS/TODO_List -framework XCTest -fobjc-arc -fobjc-link-runtime -framework XCTest -Xlinker -dependency_info -Xlinker /Users/Arni/Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build/Intermediates/ TODO_List.build/Debug/TODO\ Tests.build/Objects-normal/x86_64/TODO\ Tests_dependency_info.dat -o /Users/Arni/Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build/Products/Debug/TODO\ Tests.xctest/Contents/MacOS/TODO\ 测试重复符号 _OBJC_CLASS_$_TODOExtendedXCTestCase 在:
/Users/Arni/Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build /Intermediates/TODO_List.build/Debug/TODO Tests.build/Objects-normal/x86_64/TestTODOItem.o
/Users /Arni/Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build /Intermediates/TODO_List.build/Debug/TODO Tests.build/Objects-normal/x86_64/TODOExtendedXCTestCase.o 重复符号_OBJC_METACLASS_$_TODOExtendedXCTestCase in:
/Users/Arni /Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build /Intermediates/TODO_List.build/Debug/TODO Tests.build/Objects-normal/x86_64/TestTODOItem.o
/Users/Arni/Library/Developer/Xcode/DerivedData/TODO_List-fcuqkpfqvjdtiscxnapifzxzbgrq/Build /Intermediates/TODO_List.build/Debug/TODO Tests.build/Objects-normal/x86_64 /TODOExtendedXCTestCase.o ld:架构x86_64 clang
的2个重复符号
:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
ios - iOS 中的 DBL_EPSILON 问题
我正在使用这个 -
#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )
我的项目中的宏。
我已经在项目的 .pch 文件中声明了这个宏
它在目标是我的项目时起作用,但在我尝试使用 xctest 运行测试用例时不起作用。
构建总是因以下错误而失败 -
undeclared identifier 'DBL_EPSILON'
我已经在我的 appName.pch 中声明了这一点,并将该 .pch 导入我的文本案例包 .pch
当我导入#import <float.h>
.
这解决了我的问题。我的问题为什么在测试包中需要这个导入?因为在主项目中不需要它。
xcode - 在没有继续运行测试但没有停止其他测试的情况下使用断言失败 XCTestCase
我正在尝试使用 XCTest 框架测试我的应用程序。
如果某些逻辑条件成立(使用断言),我希望我的单个测试用例失败。我不希望测试用例中的其余代码运行,因为这可能会导致问题(例如访问空指针)我还希望测试用例的其余部分正常运行,而只是失败的测试被标记为失败。
我注意到 XCTestCase 有一个名为 continueAfterFailure 的属性。但是,将其设置为 YES 会导致失败的测试在断言之后继续执行行,并将其设置为 NO 会导致其余测试根本不运行。
这个问题有解决方案吗?
ios - 如何在 ios XCTestCase 中对两个对象不相等进行单元测试
我对单元测试相当陌生,尤其是在 iOS 中
我有一个测试用例,如果我看到两个对象不相等,它应该会成功
除了在检查它们是否相等时要求测试失败之外,我找不到给我的方法。
我不希望对不相等的对象进行测试失败,
如果对象不相等,我希望测试成功。
哪种方法可以做到这一点?
这是我的测试方法:
}
ios - iOS 测试:dispatch_once 被调用两次。应用第一,测试第二。观察者的问题
我有一个将在应用程序委托中创建的单点类。
当我运行 XCTTests 时,它会第二次创建。
这导致了两种不同的情况。如果我只是将它用于单元测试,这没问题。但是在集成测试中,当我为 urlSchmemeManager 注册一个观察者时,我得到一个 EXC_BAD_ACCESS,因为它已经被 rootViewController(在 UI 中)观察到了。
在 RootViewController 中:
有谁知道我该如何解决这个问题?