iPhone - 检索逻辑单元测试的资源

Gar*_*ary 28 resources xcode unit-testing ocunit

我一直在关注为iPhone编写单元测试的Apple文档,开箱即用,例程似乎不起作用.我不确定我理解单元测试将在何处获得对应用程序委托的引用.

我的依赖关系如下:My_Program_target - > UnitTesting_target - > UnitTests_bundle

以下代码片段断言失败.我对CPPUNIT非常熟悉,但是我很难理解它是如何跨越的.

- (void) testAppDelegate {

    id yourApplicationDelegate = [[UIApplication sharedApplication] delegate];
    STAssertNotNil(yourApplicationDelegate, @"UIAppliation failed to find the AppDelegate");

}
Run Code Online (Sandbox Code Playgroud)

另外:

我决定采用我的方法进行逻辑测试.我正在尝试读取XML文件,但我没有运气解析捆绑包,这将为我提供访问我的文件的路径.我已经尝试粘贴allBundles的路径输出,但是这条路径似乎也没有用.下面是我在测试中执行的内容(您可以看到我用来输出包的路径的调试语句):

NSLog(@"BundlePaths: %@", [NSBundle allBundles]);
   NSString * path = [[NSBundle bundleWithPath:@"$(TARGET_BUILD_DIR)"] pathForResource:@"SimpleTestList" ofType:@"plist"];
   STAssertNotNil(path, @"Bundle Location couldn't find the file specified");
Run Code Online (Sandbox Code Playgroud)

本质上,路径上的断言不成功,但我不确定要为路径或目录引入什么来引用我告诉我复制捆绑资源的unitTest捆绑包.调用[NSBundle mainBundle]也不起作用.

Gar*_*ary 73

好的,我已经弄清楚了.要在单元测试中打开文件,您需要指定要打开的文件:

NSString * filePath = [[NSBundle bundleForClass:[self class] ] pathForResource:@"SimpleTestList" ofType:@"plist"];
Run Code Online (Sandbox Code Playgroud)

如果将其包含在作为单元测试包的一部分编译的类中,则该类将在单元测试包内查找SimpleTestList.plist文件.

对于单元测试,只需确保设置"复制包资源"以将plist包含在单元测试包中.