gpt4 book ai didi

iphone - 为什么在 iphone 单元测试中实例化 UIFont 会导致崩溃?

转载 作者:行者123 更新时间:2023-12-03 18:21:24 26 4
gpt4 key购买 nike

我正在尝试对一些实例化字体的 iPhone 代码进行单元测试。我已将其范围缩小到以下崩溃单元测试:

#import "test.h"
#import <UIKit/UIKit.h>


@implementation test

- (void)testFonts {
[UIFont systemFontOfSize:12];
}

@end

这会因错误而崩溃:

Test Case '-[test testFonts]' started.
/Developer/Tools/RunPlatformUnitTests.include: line 415: 79768 Trace/BPT trap "${THIN_TEST_RIG}" "${OTHER_TEST_FLAGS}" "${TEST_BUNDLE_PATH}"
/Developer/Tools/RunPlatformUnitTests.include:451: error: Test rig '/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk/Developer/usr/bin/otest' exited abnormally with code 133 (it may have crashed).

似乎我在单元测试目标中没有进行一些设置来完成这项工作。如何对实例化字体的内容进行单元测试?

最佳答案

我的一个 friend 最近遇到了这个问题,我找出了我成功设置这个的最后一个项目。诀窍是在应用程序测试中运行任何涉及 UIFont 的测试,而不是单元测试。设置应用程序测试目标时需要确保以下几点:

  1. 构建阶段:通过以下方式将生产代码引入测试目标:将您的主要目标作为测试目标之一依赖项,而不是在测试中包含 .m 文件目标。这只是为了组织。
  2. build设置:确保测试目标的“Bundle Loader”已设置至 $(BUILT_PRODUCTS_DIR)/您的产品名称.app/您的产品名称
    再次
    。请注意,它是 .../Product.app/Product - 也就是说,路径的最后一段中没有 .app。如果你好奇查看您所指的文件,找到您的构建产品,对吧单击,选择“查看包内容”,然后找到可执行文件。
  3. build设置:您的测试目标的“测试主机”应设置为$(BUNDLE_LOADER)。简单易行。
  4. build设置:测试目标的其他链接器标志应包括-框架SenTestingKit
  5. build设置:“构建后测试”应为否。
  6. 方案:“构建”应包含您的测试目标和主要目标目标,“测试”是两个目标中唯一选择的框。
  7. 方案:“测试”应仅包含您的测试目标。文件它包含将自动添加到列表中。

...希望这足以让你们继续前进。它并没有全部清晰地记录在一个地方,并且弄清楚如何运行这两种测试花费了比我愿意承认的更多的时间和痛苦。

奇怪的是,苹果似乎在此事上撤下了自己的 doco。我想知道是否还会有其他变化......

如果您对以上内容有任何补充,请联系我。这不是设置应用程序测试的完整指南,但以上是我遇到的未记录的绊脚石。 FMI,我强烈推荐this CocoaWithLove article .

关于iphone - 为什么在 iphone 单元测试中实例化 UIFont 会导致崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1689586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com