- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试测试我的 iPhone 项目所需的一些简单的字符串操作方法。我想知道是否有在每次不加载模拟器的情况下测试方法结果的方法..
例如在我的 main.m 方法中:
#import <UIKit/UIKit.h>
int main(int argc, char *argv[]) {
testMethod();
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
void testMethod() {
NSString *body = @"{\"username\":\"name\",\"password\":\"123\"}";
NSLog(@"body=%@",body);
}
我只想运行此代码并查看控制台输出的内容(不需要模拟器)。这在 xCode 中可能吗?
最佳答案
这是 Unit Testing 的完美情况.对于 iPhone 开发,我一直在使用 GH-Unit .
设置 GH-Unit 和学习如何编写正确的单元测试会产生一些开销,但返回将是:
我从未听任何人谈论过单元测试的最大好处是它可以让您快速修复错误。当您或测试人员在您的应用程序中发现错误时,您可以快速编写单元测试以重现导致错误的情况,重新编写代码来处理错误,然后运行测试,所有这些都无需编译和运行您的应用程序.对于深埋在导航层次结构中的错误,这是一个巨大的胜利。
我刚刚记得的另一个好处是,良好的单元测试可以让您在练习模式下逐步使用您的类/方法,然后再编写一大堆依赖于特定接口(interface)的代码。这是找出那些笨拙的小工作流程的好方法,这些工作流程在您不得不真正开始使用之前似乎是个好主意。
还有一个好处: self 记录。如果您需要向某人提供有关如何使用您的类的示例代码,只需从单元测试中复制并粘贴代码即可。
我不做测试驱动开发,我也不喜欢 100% 的覆盖率,但是你可能从这篇文章中可以看出,我喜欢一些单元测试。我曾经跳过各种尴尬的圈套,设置基于终端的小项目,让我测试我的类,而无需运行整个应用程序的开销。过了一会儿,我意识到这一切是多么愚蠢,并全神贯注于学习如何测试我的类(class)。它极大地提高了我的工作效率。
@jlehr 建议使用 OCUnit,它确实与 Xcode 集成得更好并且更容易设置。不过,我会远离 iPhone 上的 OCUnit。在使用 OCUnit 的模拟器中时,我在调试器中运行单元测试时遇到了很多问题。如果您可以先尝试编写完美的单元测试,也许这不是问题:-D GHUnit 让您可以立即调试单元测试。
不过,这仅适用于 iPhone 开发人员。如果您使用的是 OS X,那么 OCUnit 是单元测试的绝佳选择。那里有很多其他测试框架,但 GHUnit 是我尝试使用的唯一一个非常适合 iPhone 开发的框架。
关于iPhone Xcode 有没有办法在不加载模拟器的情况下测试方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326463/
我是一名优秀的程序员,十分优秀!