在使用单元测试创建新项目时,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认为你不应该区分它们吗?
当我在XCode 5中运行我的测试时,我的OS X应用程序的主窗口在运行测试时会在屏幕上显示几秒钟.为什么?即使我取消注释我的所有测试,它仍会打开我的主窗口.
由于一些问题,我希望项目中的XCTest目标能够运行单独的应用程序委托.使用ObjC,这是一个相对简单的过程:操作main.m(参见:https://stackoverflow.com/a/15725328/1299041 ).
由于似乎@UIApplicationMain在AppDelegate中初始化了Swift应用程序,是否可以使用单独的AppDelegate为测试目标进行初始化?
是否可以在(测试)目标设置或测试.pch文件中定义宏,以便将其传递给整个应用程序?
或者是否有任何宏可用于检查(来自代码)我们是否正在运行测试?
例如:
#if TEST=1
// do something
#else
// do something else
#endif
Run Code Online (Sandbox Code Playgroud)
我想要这个的原因是在测试期间跳过一些代码,断言等(每次我运行测试时都不必在主应用程序.pch中更改#define).
谢谢.
我有一个应用程序,我是单元测试.在正常使用情况下,App Delegate会设置并开始运行.但是,当我运行我的单元测试时,我希望App Delegate不会做太多,如果有的话.我将如何实现这一目标?似乎某些设置内容在测试运行器运行时正在运行,并且它往往会在测试运行时抛出异常,从而导致其失败.
xcode ×3
xctest ×3
ios ×2
unit-testing ×2
debugging ×1
objective-c ×1
swift ×1
testing ×1
xcode5 ×1