- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个 OCUnit 测试,它在 Xcode 3.2 中运行良好,现在我在 Xcode 4 中遇到了问题。它测试了一个静态函数 X
在类 A
,它不调用任何类或函数(库函数之外)。唯一需要调用的其他代码是静态构造函数,它初始化两个静态变量,但同样,这些是不调用任何其他类或类 A
的函数的硬编码值(数组)。 .
然而,为了解决 ,我必须为它导入的所有类以及它们导入的类包含 .m、.mm 和 .c 文件。 _OBJC_CLASS_$_ClassB",引用自: 错误。我不记得必须在 Xcode 3 中执行任何操作,但是很好,没问题,我可以编译它。现在,我收到源自类的错误B
的 +[B initialize]
。
为什么在未以任何方式引用的类上调用静态构造函数?我该如何解决这个问题,理想情况下不改变我的类(class)来适应测试?
更新
为了进一步弄清楚发生了什么,我注释掉了我所有的测试用例和 #import "A.h"
看看会发生什么。我添加了一个简单的单元测试:
- (void) testSomething {
STAssertTrue(NO, @"did it work?");
}
+[B initialize]
被调用并失败。似乎 OCUnit 正在遍历我所有的类(class),以及他们的
+initialize
方法在这个过程中被调用。这对我来说毫无意义 - 如何禁用此行为?
#7 _class_initialize ()
#8 prepareForMethodLookup ()
#9 lookUpMethod ()
#10 objc_msgSend ()
#11 +[NSObject(SenTestRuntimeUtilities) senIsASuperclassOfClass:] ()
#12 +[NSObject(SenTestRuntimeUtilities) senAllSubclasses] ()
#13 +[SenTestSuite updateCache] ()
#14 +[SenTestSuite suiteForBundleCache] ()
#15 +[SenTestSuite testSuiteForBundlePath:] ()
#16 +[SenTestProbe specifiedTestSuite] ()
#17 +[SenTestProbe runTests:] ()
#18 <????> ()
#19 <????> ()
#20 <????> ()
#21 <????> ()
最佳答案
我在 xcode 4 和我的单元测试套件中也遇到了很多问题。
我必须查看您的消息来源才能知道您的情况发生了什么,但是 OCUnit 通过对类的反射做了很多事情。这就是运行以“test”开头的方法的方法。所以它在检查你的类,导致它们的类初始化器被触发是有道理的。
我知道这可能不是您正在寻找的答案,但是如果 B 的 +initialize 中的错误是因为它依赖于某种预期的应用程序状态,那么您可能真的想考虑重构 +initialize。由于这个确切的原因,它不应该依赖于类本身之外的任何东西......你无法保证它何时会触发或事物将处于什么状态。
关于objective-c - OCUnit 测试在未测试的类中给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5332348/
有谁知道如何查找 ostest 实用程序抛出的所有可能错误代码的列表及其含义?我注意到这对人们来说是一个常见问题,他们询问 OCUnit 故障,其中代码 138 或 139 对他们来说完全不透明,而遇
我正在 XCode 3.2.3 和 iOS 4.0 上使用 OCUnit 对我的 iPhone 应用程序进行单元测试。我已成功设置测试环境以适本地通过和失败基本测试,但是当我导入自己的文件(在本例中为
在调试测试用例失败时,如果执行会在测试用例失败时自动中断,那将非常有用,这样我就可以直接调查失败。因此,本质上是断言失败时触发的断点。 有谁知道是否有简单的方法可以做到这一点? 最佳答案 有很多解决方
尝试使用以下方式将安全条目添加到钥匙串(keychain)时: SecItemUpdate((CFDictionaryRef)queryKeychain, (CFDictionaryRef)updat
我编写了一个 OCUnit 测试,它在 Xcode 3.2 中运行良好,现在我在 Xcode 4 中遇到了问题。它测试了一个静态函数 X在类 A ,它不调用任何类或函数(库函数之外)。唯一需要调用的其
当运行测试用例的目标时,什么也没有发生,而是显示警告消息 警告:跳过测试; iPhoneSimulator 平台当前不支持应用程序托管测试(TEST_HOST 设置)。 我正在使用 xcode 3.2
我一直在尝试对异步请求进行自动化测试,但是在测试功能等待时,我无法在不同的线程中运行任何东西。 这是测试功能: - (void) testBoxManagerConnexionStatus {
有什么方法可以使用 OCUnit 来表示待定测试吗?当然,我可以这样做: STFail(@"待测试"); 但是,很容易看到失败的测试运行并假设它是我的未决测试。我正在寻找某种方式来告诉自己“这个测试仍
我想使用 Apple 的默认 SenTestingKit 为以下方法编写单元测试: - (NSDictionary*)getValueTags { return _tags; } - (NSS
有没有办法在多个 OCUnit 测试用例之间共享代码?也许我遗漏了一些明显的东西,但我一直没能做到...... 我试图将公共(public)代码放在另一个类中,但似乎只能在继承自 SenTestCas
在运行应用程序测试时(即在设备上),我的 OCUnit 测试套件出现了一些问题。有时,我会遇到一个棘手的错误,似乎是从 OCUnit 类中抛出的。我一直在尝试查看添加到测试套件中的文件,但无法理解它。
我一直在使用 OCUnit 在一个项目中进行单元测试。我已经成功完成了 Xcode 4.2 中 OCUnit 所需的所有设置并成功构建了我的测试用例。 如何控制测试用例的顺序(优先级)?我看到测试用例
我刚开始使用 OCUnit,发现断言有点麻烦。在 JUnit 中,我可以编写一个测试来比较如下所示的数字。这个测试显然会失败,但这显示了我可以为两个数字编写的漂亮、简单的断言和我得到的反馈:“预期
更新:我最终放弃并将 GHUnit 添加到我的项目中。我在几分钟内就启动并运行了 GHUnit。 更新:您可以在此处下载 Xcode 项目:http://github.com/d11wtq/Ciocc
我目前正在使用一个简单的对象,该对象将 lat 和 lng 值保存为 NSString。但是当我试图断言它们是平等的时,我用这种方法失败了 - (void) testLocationParseJson
我正在尝试进一步提升我对 TDD 的体验,我想知道如何检查类中是否存在属性。具体来说,我想确保对象有一个双命名累加器。 // // CSCalculatorModel.h // Calculato
我正在开发一个应用程序,只有在游戏取得进展时,该应用程序才会在点击退出按钮时显示 UIAlertView 。我想知道如何使用 OCUnit 拦截 UIAlertView 并与其交互,甚至检测它是否已呈
我根据“iPhone开发指南”创建了OCUnit测试。这是我要测试的类: // myClass.h #import #import @interface myClass : NSObject {
我真的很难理解单元测试。我确实理解 TDD 的重要性,但是我读到的所有单元测试示例似乎都非常简单和琐碎。例如,测试以确保设置了属性或是否为数组分配了内存。为什么?如果我编码出 ..alloc] ini
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: 'isMemberOfClass' returning 'NO' when custom init “isM
我是一名优秀的程序员,十分优秀!