我正在尝试使用TDD和新的XCTest框架编写iOS应用程序.我的一个方法从Internet检索文件(给定NSURL对象)并将其存储在用户的文档中.该方法的签名类似于:
- (void) fetchAndStoreImage:(NSURL *)imageUrl
Run Code Online (Sandbox Code Playgroud)
我正在尝试为这种方法编写测试,如果没有连接到互联网就不会失败.我的方法(取自上一个问题)是使用NSURL将方法调用到本地文件系统中的图像.
当创建启用了单元测试的新项目时,Tests目录有一个名为"Supporting Files"的子目录.我想这是我的测试图像应该去的地方.我的问题是如何获得指向此目录中的图像的NSURL对象,因为我不希望测试图像与应用程序捆绑在一起.任何帮助表示赞赏.
在使用单元测试创建新项目时,Xcode将构建配置设置为Test for Test方案(与Run方案相同).
我应该区分Run(Command-R)和Test(Command-U)方案吗?
即,我应该创建一个名为Test的新构建配置,向它添加预处理器宏TEST = 1,并将其用作测试方案的构建配置吗?或者,我应该将Run&Test作为Debug进行保存吗?
我来自Ruby/Rails背景,您通常拥有测试,开发和生产环境.在我看来,Debug就像开发一样,Release就像生产一样,但是我们错过了一个测试,这就是我认为添加Test可能有意义的原因.
评论?意见?建议?
我特意问这个,因为我想为Test编译一些东西:
#ifdef TEST
// Do something when I test.
#endif
Run Code Online (Sandbox Code Playgroud)
如果我也为Debug编译它,我认为这不重要.所以,我真的可以做到:
#ifdef DEBUG
// Do something when I run or test.
#endif
Run Code Online (Sandbox Code Playgroud)
但是,我真的只打算在现在进行测试.所以,这就是为什么我认为我应该区分调试和测试,但我想知道为什么Xcode默认不为你做那个?Apple认为你不应该区分它们吗?