iPhone单元测试:调用自定义代码时未找到符号

2024-04-06

我正在尝试为我的 iPhone 应用程序设置单元测试。我跟着苹果单元测试文档 http://developer.apple.com/iphone/library/documentation/Xcode/Conceptual/iphone_development/135-Unit_Testing_Applications/unit_testing_applications.html#//apple_ref/doc/uid/TP40007959-CH20-SW1通过并且工作得很好,但是当我在该测试中添加另一个类时,我收到以下错误:

  "_OBJC_CLASS_$_RootViewController", referenced from:
      __objc_classrefs__DATA@0 in AppDelegateTests.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

该应用程序本身是一个基本的导航应用程序,具有用于数据存储的核心数据。

单元测试如下:

#import <SenTestingKit/SenTestingKit.h>
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>

#import "HSStabilityAppAppDelegate.h"
#import "RootViewController.h"
@interface AppDelegateTests : SenTestCase {
 HSStabilityAppAppDelegate *appDelegate;
}
@end


@implementation AppDelegateTests
// all code under test must be linked into the Unit Test bundle


#pragma mark -
#pragma mark Set up and tearDown

#if APPLICATION_TESTS
- (void) setUp {
 appDelegate = (HSStabilityAppAppDelegate *)[[UIApplication sharedApplication] delegate];
 STAssertNotNil(appDelegate, @"Cannot find the application delegate.");
}

- (void) tearDown {
 [appDelegate release];
}

#else

#endif


#pragma mark -
#pragma mark Tests

#if APPLICATION_TESTS

- (void) testRootViewIsOnTop {
 id topViewControllerClass = [[appDelegate.navigationController topViewController] class];
 id rootViewControllerClass = [RootViewController class];
 STAssertEquals(topViewControllerClass, rootViewControllerClass, @"Root view controller was not the top class");
}

#endif

@end

如果我注释掉 id rootViewControllerClass 行,则程序链接正确。 另外,这种情况仅在针对设备目标构建时发生,如果针对模拟器构建,我不会遇到任何问题(可能考虑到应用程序测试在模拟器上不起作用)。

任何人都可以帮助解决这个基本且非常令人恼火的问题吗?


我也关注了Apple 的 iPhone 单元测试应用程序 http://developer.apple.com/iphone/library/documentation/xcode/conceptual/iphone_development/135-Unit_Testing_Applications/unit_testing_applications.html#//apple_ref/doc/uid/TP40007959-CH20-SW3文档并在尝试对我的一个类进行单元测试时看到类似于问题中描述的链接错误。

看起来像单元测试类中引用的任何类,因此从测试目标运行也需要添加到该测试目标中。为此,您可以右键单击您的RootViewController类并单击“获取信息”(Cmd-i 快捷键)。在目标窗格中,确保选中您的单元测试目标(例如“LogicTests”,如果您遵循该文档中的命名)。

现在该类将与您的测试一起编译,并且应该可用于您的单元测试。要仔细检查,请展开左侧“组和文件”浏览器中的“目标/逻辑测试/编译资源”节点。这列出了构建目标时可用的所有类文件,现在应该包括您的单元测试类以及正在测试的类。

(请注意,当您创建新应用程序或测试类时,您需要类似地选择所有适当的目标 - 当您命名文件时,在“新文件...”窗口的同一页面上)。

(顺便说一句,我正在使用 XCode 3.2.3 和 OS 4.0)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iPhone单元测试:调用自定义代码时未找到符号 的相关文章

随机推荐

  • 带通配符的 FTP 目录部分列表

    首先我问 ftp 目录列表超时 大量子目录 https stackoverflow com questions 9230485 ftp directory listing timeout huge number of subdirs 我得到
  • 在 JFrame 中组织多个 JPanel 的好方法是什么?

    我想做的是在框架内组织五个独立的 JPanel 输出应如下所示 顶部将有一个面板 顶部面板正下方的两个面板垂直分割空间 然后另外两个面板水平分割剩余空间 我无法弄清楚如何组织如上所述的面板 我认为这是因为我不知道正确的语法 因此 非常感谢任
  • 引用在嵌套结构中的生存时间不够长

    我正在创建一系列数据结构 其中包含对较低级别结构的可变引用 我一直很愉快地与A B and C下面但我尝试添加一个新层D A B C D实际上是用于协议解码的状态机的状态 但我在这里删除了所有这些 struct A fn init A gt
  • Go 模块在 VSCode 中导入问题(“无法在任何 [...] 中找到包 [...]”)

    我遇到了可能是 Gopls 语言服务器问题 在 VSCode 中使用带有 Go 扩展的 Go 模块时 我的所有外部包导入语句都被标记为不正确 这正是我到目前为止所做的 在我的 GOPATH src github com Kozie1337
  • sbt:选择运行的主类

    我的应用程序中有大约 6 个主要类 但我通常只使用其中一个 所以我想通过 sbt 自动运行它 sbt 使得可以在 build sbt 中定义两个键 Run Key val selectMainClass TaskKey Option Str
  • 无法检索访问令牌 linkedin api

    我正在申请connect with linkedin 我正在关注分步指南 https code google com p simple linkedinphp wiki QuickStart 为了验证用户身份 我寻求了帮助this http
  • 如何绘制具有不同 colspan 的四个子图?

    我尝试使用四张图像来拟合matplotlib pyplot像下面这样 plot1 plot2 plot3 plot4 我发现的大多数例子都涵盖了如下三个图 ax1 plt subplot 221 ax2 plt subplot 222 ax
  • 当我将 targetSDK 设置为 API 30 后,我的 Android 应用程序无法正常工作;我如何找出原因?

    根据Google https developer android com distribute best practices develop target sdk 从 2021 年 8 月开始 所有新的 Google Play 应用程序除了
  • Gatsby 未生成正确的静态 HTML 文件

    我正在开发一个基于盖茨比的网站 到目前为止该网站的开发进展顺利 但在构建生产时遇到了一个问题 即我们在各个页面索引文件中没有获得任何静态 html 相反 Gatsby 似乎将尝试从 javascript 注入页面 这与我们的预期相反 我看到
  • Pandas.read_excel 读取 xlsx 文件集时出现 KeyError

    我使用 Anaconda shell 进行数据分析 上传到pandas一堆excel文件 25个文件 在此文件上https www dropbox com s 16ea1cw6k63i16p Newdata zip dl 0 https w
  • 添加两个具有不同回调的谷歌地图[重复]

    这个问题在这里已经有答案了 我的页面上有两个谷歌地图容器 第一个 id map 只是一个普通的 显示地图 第二个 id map2 是一个搜索地图 用户在其中键入输入 地图将刷新到用户键入的位置 这些地图使用相同的 api 密钥 但它们的回调
  • Request.pipe() JPEG 流

    我正在开发一个作为 ZoneMinder 中间件的 Nodejs 应用程序 简而言之 我的目标是屏蔽所有 ZoneMinder api 以便客户端不知道我是否使用 ZM 一切都很好 但有一件事让我烦恼 ZM 中有一个流 api 它提供流 J
  • PyGame:文本未出现

    我正在遵循教程 我试图让我的文本出现在屏幕上 这是我的代码 但文本不会出现 from future import division import math import sys import pygame class MyGame obje
  • 如何使用 PHP 安全地将 JSON 数据写入文件

    我有用于编辑图像的 HTML 表单 所有数据都存储在 JSON 中 当我更改当前图像时 我想通过 PHP 脚本将更改保存到文本文件中 如果我返回到上一个图像 该配置将再次从该文件发送到表单 我的问题是 如何安全地写入 读取此类数据 在哪里以
  • 在 WooCommerce 主页上隐藏“缺货”产品

    我不想在主页上显示 缺货 产品 我尝试了一些 WooCommerce 挂钩和过滤器来更改产品查询 但它不起作用 我还在 woocommerce 设置区域中检查了 隐藏缺货 但产品仍然出现 我能得到线索吗 发生了什么 我尝试使用此过滤器挂钩来
  • C#:正确使用 Wea​​kReference IsAlive 属性

    正如所解释的here https msdn microsoft com en us library system weakreference isalive v vs 110 aspx if WeakReference s IsAlive返
  • Python:在重新分配外部函数后,闭包如何继续存在?

    我学习了 Python 中的闭包 并且对这个概念有了足够的了解 在 IDLE 中闲逛时 我想到了如果我重新分配封闭函数然后尝试调用封闭函数会发生什么 gt gt gt def outer function hello message hel
  • 关于http://stackoverflow.com/questions/2381560/how-to-group-a-3x3-grid-of-radio-buttons

    我尝试使用标题中显示的网站上作为第一个答案提供的代码 尽管我尝试修改它 但我无法使其工作 问题是 当我检查第一个单选按钮以外的单选按钮时 它们都会保持选中状态 问题是 什么时候调用 addView 方法 另外 这是我的代码版本 我希望有人能
  • 使用 argparse 创建互包参数

    我想构建一个程序 它有 2 个相互包含的参数和 2 个不依赖于前两个的参数 像这样的东西 consume count n show clear 其中 consume 和 count 相互依赖 即 没有 consume count 将抛出错误
  • iPhone单元测试:调用自定义代码时未找到符号

    我正在尝试为我的 iPhone 应用程序设置单元测试 我跟着苹果单元测试文档 http developer apple com iphone library documentation Xcode Conceptual iphone dev