使用 UIWebView 进行单元测试

Posted

技术标签:

【中文标题】使用 UIWebView 进行单元测试【英文标题】:Unit testing with UIWebView 【发布时间】:2011-10-17 12:11:15 【问题描述】:

在单元测试中创建 UIWebView 时,我得到 EXC_BAD_ACCESS:

-(void)test1 
    [[UIWebView alloc] initWithFrame:CGRectZero];  // EXC_BAD_ACCESS

是否有特殊配置来运行涉及 UIWebView 的单元测试?

我在 XCode 4.2 上使用 OCUnit/SenTest。

【问题讨论】:

我在模拟器上调试时偶尔会遇到 EXC_BAD_ACCESS,但在设备上运行时从来没有。我怀疑一个错误:/ 我也有同样的问题!我以为只有我。也许你无法测试 UIWebView? 【参考方案1】:

显然,这只发生在直接对静态库进行单元测试时。很可能UIWebView 需要的任何东西都没有加载一个空的test host

在对应用进行单元测试时不会发生这种情况。

【讨论】:

那么,有没有办法在静态库中使用 UIWebView 进行测试?我将 UIKit 添加到静态库的构建设置中,但在尝试运行测试时仍然会收到此 EXC_BAD_ACCESS。【参考方案2】:

您可以创建一个仅用于运行单元测试的应用目标。在同一工作区中创建一个新的空应用程序并将其设置为单元测试目标的 Target。我将我的应用称为 TestRunner。

【讨论】:

您能详细说明一下吗?这似乎是一个合理的解决方案。但是您的意思是同一个项目中的一个空应用程序还是有更好的方法来设置它? 我添加了一个屏幕截图,显示了目标的配置位置。 这是我不太明白的“空应用程序”部分。但是现在我已经让它工作了,我意识到你的意思是一个 shell 应用程序,它没有任何特性(空方法......等),它只是编译,然后允许它自己被我们的测试“定位”以运行.这完全有效,是一个可行的解决方案。谢谢! 只是在这里跟进。我得到了完整的测试套件来工作。幸运的是,这个特定的项目是开源的,代码/方法可以在这个 repro 中找到:github.com/BlueKai/bluekai-ios-sdk/tree/master/sdk 对我没有帮助。我收到GuardMalloc[UnitTestRunner-16080]: could not allocate new zone: (os/kern) no space available 而不是uardMalloc[xctest-16321]: could not allocate new zone: (os/kern) no space available

以上是关于使用 UIWebView 进行单元测试的主要内容,如果未能解决你的问题,请参考以下文章

Android怎样进行单元测试

使用MOCK对象进行单元测试

使用本机单元测试项目在 Visual Studio 2017 中对 C 代码进行单元测试

Java应用XVIII在 Java 中使用JUnit5进行单元测试和自动化测试

java 使用idea进行单元测试

Maven 进行单元测试用例的使用,加载的资源是哪里的