- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将项目从Xcode 4.6.3迁移到Xcode 5.0.2。该项目的单元测试是使用SenTestingKit / OCUnit开发的。现在,当我在Xcode 5中运行测试时,我从RunUnitTests
脚本中得到了一个错误,告诉我
RunUnitTests is obsolete.
SenTestingKit and OCUnit are deprecated. Use the migrator to move to XCTest.
最佳答案
感谢Shaggy Frog的回答,我们知道Xcode发行说明中提到的神秘的“迁移器”是通过选择“编辑>重构>转换为XCTest”启动的向导。我将分两部分来介绍有关使用该向导的经验。第一部分是对主要问题的不完整答案,第二部分是对次要问题的回答。
第1部分:如何从OCUnit迁移到XCTest
您需要意识到的第一件事是,要使向导正常工作,您需要选择一个单元测试目标。如果选择了主要目标,则向导不会列出任何要转换的目标。
一旦知道了这一点,便可以逐步完成向导,但就我而言,最终结果仍然是一个惊人的失败!该向导声称不需要更改源代码,仅需要更新构 build 置即可迁移到XCTest。最后,该向导甚至没有设法正确地做到这一点:它确实删除了对SenTestingKit框架的引用,但是没有对XCTest框架进行引用。
无论如何,以下是由于向导无法为我进行手动更改的列表。如果该向导更适合您,则您可能不需要做所有这些事情。
SenTestCase
更改为XCTestCase
<SenTestingKit/SenTestingKit.h>
更改为<XCTest/XCTest.h>
octest
更改为xctest
。 ST*
重命名为XCT*
(例如STAssertTrue
变为XCTAssertTrue
)STAssertEquals
需要重命名为XCTAssertEqual
(请注意末尾缺少的“s”)。如果收到以下编译器警告,就会知道您已经忘记了这一点:warning: implicit declaration of function 'XCTAssertEquals' is invalid in C99
nil
作为失败描述传递。例如,XCTAssertNotNil(anObject, nil)
是不可能的,必须将其更改为XCTAssertNotNil(anObject)
。当您遇到以下编译器错误时,您将知道存在此问题:error: called object type 'NSString *' is not a function or function pointer
。 NSString
类方法stringWithFormat:
一样。当您遇到以下编译器错误时,您将知道存在此问题:error: expected ')'
。一些示例:NSString* formatSpecifier = @"%@";
NSString* failureDescription = @"foo";
// These are OK
XCTAssertNotNil(anObject, @"foo")
XCTAssertNotNil(anObject, @"%@", failureDescription)
// These are not OK
XCTAssertNotNil(anObject, failureDescription);
XCTAssertNotNil(anObject, formatSpecifier, failureDescription);
Undefined symbols for architecture i386: "_OBJC_CLASS_$_XCTestCase", referenced from: foo
),您就会知道已经忘记了这一点。
clang
在看到
#import <XCTest/XCTest.h>
语句时自动链接到XCTest。详细信息在
"Modules" section of the clang documentation中可用。
关于xcode5 - 如何从SenTestingKit/OCUnit迁移到XCTest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20022512/
我有在xcode 6.4中可以正常运行的项目,现在我正在xocde7 beta版中运行它。找不到其给定错误“SenTestingKit/SenTestingKit.h”文件 /Applications
我目前正在从事一个项目,我正在使用 Stripe 包从我的项目中实现 PaymentGateWay。我已经为这个项目使用了 UnitTesting(自动导入 SenTestingKit/SenTest
我已经通读了在 xcode 4.5 中引用此内容的文章,但它在 xcode 5.0.2 中对我没有帮助。 我有一个编译成功的项目。如果我将 Stripe 框架添加到我的项目中,它会立即无法编译,并为我
我已经为 iPhone 创建了一个基于 map 的应用程序,并且最近将它提交给了商店。我在设备或模拟器上运行该应用程序没有遇到任何问题。但是,商店拒绝了它,因为它在发布时崩溃了。崩溃日志提示找不到 S
我在升级我的 xcode 版本时出现了一个问题。我使用单元测试,现在当我尝试导入 SenTestingKit ( #import ) 时,我收到此错误:SenTestingKit/SenTestin
我想在 iOS 中进行单元测试。默认情况下,测试类是使用 Xcode 5 中的 XCTest 框架类创建的。我在早期版本的 iOS 中使用过 SenTestingKit。这两个框架有什么区别? XCT
我正在尝试使用 XCode 3.2.3 为 iPhone 应用程序设置单元测试。 我按照 http://developer.apple.com/iphone/library/documentation
我是 Xcode 测试新手。我正在关注开发人员文档“iOS 开发指南”单元测试应用程序。 我已成功将单元测试包添加到我的应用程序中,但有一个测试失败。 当我构建测试目标时,输出按预期显示 1 个错误,
我似乎能够找到用于测试异常的唯一解决方案是使用 SenTestingKit 的 STAsertThrows 和 STAsertThrowsSpecific,但是在这两种情况下,当应用程序抛出异常时测试
我已经创建了一个 iOS 单元测试目标,用于按照 Apple 文档中提供的步骤进行逻辑测试。 但是我的构建失败了并且出现了以下错误: Undefined symbols: "_OBJC_CLASS_$
我有 Xcode 5.0.2。我创建了新项目。新项目已经有了基于XCTest框架的测试目标。但 XCTest 不适用于 iOS 6.1。但我想在 iOS 6.1 上测试我的项目,为此,我认为我应该迁移
我一直在寻找一种方法来使用 SenTestingKit 在我的客户端代码和我们的服务器之间进行一些集成测试。我没有任何运气。似乎一旦代码在方法中运行,对象就会被销毁。这意味着任何异步响应都不会调用选择
我有一个类似于 this post 中的错误.现在,我确定我在某个地方犯了一些愚蠢的错误,可能与释放对象或观察者或其他无关的东西有关,但由于我似乎无法找到调试代码的方法,所以我认为我可以使用NSDeb
关于使用 SenTestingKit(XCode 4 的内置单元测试框架)和 GHUnit 对 XCode 4 进行单元测试,有什么建议吗?特别是: XCode 4 中单元测试的明显改进是否意味着使用
当尝试使用 OCUnit (SenTestingKit) 编写一些单元测试时,我开始在 XCode 中收到如下警告。 warning: creating selector for nonexisten
我刚刚安装了 XCode 4.5,它在我现有的一个项目中给出了一个“SenTestingKit/SenTestingKit.h”文件未找到错误。这个错误只发生在 XCode 4.5 中,但它在 4.4
我是一名优秀的程序员,十分优秀!