1

使用 Xcode 提供的内置测试框架,有没有办法让应用程序代码确定它是否正在由测试运行程序运行,而不是作为应用程序运行?

换句话说,我想知道是否可以在应用程序代码中做这样的事情:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // ...

    if (IsUnitTestRunning()) {
        [self useDefaultSettings];
        [self showDefaultViewController];
    }
    else {
        [self restoreUserSettings];
        [self restoreUserInterface];
    }

    // ...
}

我知道我可以创建一个新配置来定义一些预编译器宏并设置 Xcode 方案以在运行测试时构建和使用该配置,或者我可以在运行测试时将我的应用程序中的某种全局变量设置为 YES,但我我想知道 OCUnit 或 Xcode 中是否已经内置了一些东西来处理这个问题。

4

1 回答 1

1

在 Macintosh 上,有一种方法可以在 Xcode 调试期间传递一些选项,使其进入“ int main(argc, argv)”。

我怀疑 iOS 端也有类似的功能。您应该能够捕获通过“ int main(argc, argv)”传递的选项。

这是您在 Xcode 方面进行修改的地方:

稍微修改一下你的 Xcode 方案

另一种选择可能是查看通过“ didFinishLaunchingWithOptions:”传入的选项字典,看看从 Xcode 启动与在设备或模拟器上启动它是否有什么不同(而不是从 Xcode 启动)。

于 2013-04-15T18:35:09.267 回答