温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

iphone开发之单元测试SenTestCase

发布时间:2020-04-28 14:12:39 来源:网络 阅读:786 作者:arthurchen 栏目:开发技术

使用xcode开发很长一段时间了,可是并没有使用其中支持的单元测试的功能,所以特别留意了一下使用单元测试的方式。

l  iPhoneSDK3.0开始直接支持单元测试,可以创建Unit test bundle形式的target。方便了单元测试代码的编写。

l  还有一个是用google-toolbox-for-mac中带的iPhone Unit Test 框架,其实此框架也是基于OCUnit库,但是区别是google-toolbox-for-mac添加了一部分自己的代码从而实现有限的UI测试。

Xcode中支持两种形式的单元测试:Logic TestsApplication Tests

n  其中Logic Tests主要测试程序静态的函数逻辑功能,在程序的编译(Build)阶段进行,并且只能在模拟器中使用。

n  Application Tests在程序的运行(Run)阶段进行,可以更全面的测试程序运行的一些状态功能,包括AppDelegateXibviewController等的加载和程序启动后的一些功能,并且不能在模拟器中使用而只能在真机上使用。

1:测试环境创建

添加测试target到工程

iphone开发之单元测试SenTestCase

 

记得添加SenTestingKit.framework到测试的target中,这样才能支持测试

iphone开发之单元测试SenTestCase

 

这是一个从SenTestCase继承的class,测试代码在里面实现。

iphone开发之单元测试SenTestCase

 

2.编写测试函数

测试函数的结构为

- (void) test<test_case_name> {

   ...     // Set up, call test-case subject API.

   ST...   // Report pass/fail to testing framework.

   ...     // Tear down.

}

函数命名以test为前缀,并且返回值为void,不带参数。

其中Set UpTear down可以单独拿出来写两个函数

- (void) setUp {

   test_subject = [[MyClass new] retain];

   STAssertNotNil(test_subject, @"Could not create test subject.");

}

- (void) tearDown {

   [test_subject release];

}

这样在调用测试函数之前会自动调用setUp 函数,之后会自动调用tearDown 函数。当然,如何写出好的测试代码,这个还需要进一步的学习。

准确的说Test Cases不需要运行,编译的时候就运行了。尝试 Build Unit Test Target, 你会直接得到一个错误,就像编译错误一样显示在Xcode里面。可以在AppTarget加上Unit Testdenpendency 这样,每次Build and Go的时候Test Cases都会运行一次,如果有错,马上会停下来,显示错误。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI