菜鸟教程小白 发表于 2022-12-13 01:21:44

ios - 将单元测试目标添加到现有 Xcode 项目,无法在包中找到资源


                                            <p><p>我已将 Cocoa Touch Unit Testing Bundle 类型的新目标添加到现有 iOS 项目、测试用例和一些我需要测试的 jpg 文件。</p>

<p>我正在尝试使用以下代码从测试包中加载图像:</p>

<pre><code>@implementation PhotosViewController_Tests : XCTestCase

-(void)addImage:(NSString *)imageName
{
    NSBundle *bundle = ];
    NSString *imagePath = ;
    UIImage *image = ;

    ...
}
</code></pre>

<p>但是,bundle 返回主包,而不是测试包,并且 imagePath 和 image 为 nil。</p>

<p>我可以成功地从主包加载图像(使用此代码),但我不明白为什么 bundleForClass 返回 mainBundle 而不是单元测试。</p>

<p>我打印了 <code></code>,我也得到了主包:</p>

<pre><code>&#34;NSBundle &lt;/var/mobile/Applications/uuid/Photos Light.app&gt; (loaded)&#34;
</code></pre>

<p>我猜这与创建项目后添加单元测试目标有关,但我不知道还有什么可以从测试包中加载图像。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>尝试在您的测试目标中为 NSBundle 添加一个扩展,看起来像这样......</p>

<pre><code>@implementation NSBundle (MyAppTests)

+ (NSBundle *)testBundle {
    // return the bundle which contains our test code
    return ;
}

@end
</code></pre>

<p>然后,当您需要从测试包中加载资源时,导入该类别,然后您的代码看起来像...</p>

<pre><code>NSString *imagePath = [ pathForResource:imageName ofType:@&#34;jpg&#34;];
UIImage *image = ;
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将单元测试目标添加到现有 Xcode 项目,无法在包中找到资源,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/25536888/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/25536888/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将单元测试目标添加到现有 Xcode 项目,无法在包中找到资源