在Xcode 6 / iOS 8 SDK及更早版本中,我可以检查
的BOOL值 [NSBundle bundleWithIdentifier:@"com.mycompany.AppUnitTests"] != nil
从我的应用程序内部查看某组单元测试是否正在进行中。 (请注意,我正在运行我的测试作为应用程序测试,而不是逻辑测试。)从Xcode 7 / iOS 9 SDK开始,似乎不再有效 - 该包总是返回为nil。我怀疑Xcode 7已经改变了应用程序加载和运行单元测试的方式,但我不能指责它。任何人都知道在Xcode 7 / iOS 9 SDK下检测到这种方法的方法吗?
(顺便说一句,我知道我可以检查[NSBundle bundleForClass:NSClassFromString(@"XCTest")]
以确定是否有任何单元测试正在进行中,但我有几个测试套件并且需要能够区分它们;因此通过捆绑ID进行检查谢谢。)
更新
行为的这种变化似乎是由于所描述的捆绑加载顺序的变化here。而且,正如Apple描述here,+bundleWithIdentifier:
只检索对已加载的包的引用 - 因此,当它尚未加载时,我无法获得对该包的引用。我想现在的问题是,如何在应用程序启动之前加载测试包?