使用 otest 调试测试时,如何将可执行文件链接到测试包?
我正在使用 Chris Hanson 优秀的 Xcode 单元测试指南的混合体。
我的程序是一个(命令行)应用程序(它阻止使用可执行文件本身来运行测试),但我需要能够调试我的单元测试。
所以我所拥有的如下:
创建测试包和测试。 创建新的测试目标,设置捆绑加载器和测试主机。 添加主目标作为测试目标的直接依赖项。 创建新的自定义可执行文件 otest。 添加 -SenTest self
、MyTestBundle.octest
参数。 在环境中添加 DYLD_LIBRARY_PATH 和 DYLD_FRAMEWORK_PATH 变量。
我的问题是,当我现在尝试通过运行可执行文件来调试测试时,测试引用的类不可用。例如,如果我为类 Foo 编写一个测试,一旦我在测试中实例化 Foo,我就会收到错误的访问异常。
如果我将 Foo.m 添加到测试目标,这种情况就会消失,但我不想将我想要测试的每个类添加到测试目标和应用程序目标。
我假设我只需要添加某种变量告诉 otest 在我的主可执行文件中哪里可以找到类,但我不知道这个参数的名称是什么。
有人可以指出我解决此问题的正确方向吗?
I'm using kind of a hybrid of Chris Hanson's excellent Xcode unit testing guide.
My program is a (command-line) application (which precludes using the executable itself to run the tests), but I need to be able to debug my unit tests.
So what I have is as follows:
Create test bundle and tests.
Create new test target, set bundle loader and test host.
Add main target as direct dependency for test target.
Create new custom executable otest.
Add -SenTest self
, MyTestBundle.octest
, arguments.
Add DYLD_LIBRARY_PATH
and DYLD_FRAMEWORK_PATH
variables in environment.
My issue is that when I now try to debug a test by running the executable, the classes referenced by the tests are not available. For instance if I write a test for class Foo, as soon as I instantiate Foo in my test I get a bad access exception.
If I add Foo.m to the test target this goes away, but I'd rather not have to add every class I want to test to the test taget as well as the application target.
I assume I just need to add a variable of some sort telling otest where to find the classes in my main executable, but I don't know what the name of this argument would be.
Can somebody point me in the right direction for fixing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
再想一想, XCInjectBundle 和 XCInjectBundleInto 变量会有帮助吗?它们在 Apple 的 自动化单元测试中进行了描述
Xcode 3 和 Objective-C
On second thought, would the XCInjectBundle and XCInjectBundleInto variables help? They are described in Apple's Automated Unit Testing with
Xcode 3 and Objective-C