如何在XCTest(Swift 5)中测试导入的自定义字体
自定义字体验证与XCTest测试实现
一、手动验证文本框字体的方法
- 对比渲染效果:将使用
Roboto-Regular的文本与系统默认字体(如San Francisco)的相同文本并列,通过字形差异(字母间距、笔画粗细等)直观判断。 - 调试视图检查:在Xcode的Debug View Hierarchy中选中目标文本框,查看其
font属性的name字段是否为Roboto-Regular。 - 打印字体信息:在代码中添加打印语句,直接输出文本框的字体详情:
print("当前字体名称:\(textField.font?.fontName ?? "未知"), 字体大小:\(textField.font?.pointSize ?? 0)")
二、XCTest自动化测试实现逻辑
前置条件
确保项目已正确导入字体文件,并在Info.plist的Fonts provided by application字段中配置对应字体文件名(如Roboto-Regular.ttf)。
测试用例代码
import XCTest @testable import YourAppName // 替换为你的项目名称 class FontValidationTests: XCTestCase { // 验证文本框是否使用Roboto-Regular字体 func testTextFieldUsesRobotoRegularFont() { // 创建测试用文本框并设置内容 let textField = UITextField() textField.text = "Stack overflow" // 应用自定义字体 textField.font = UIFont.robotoRegular(size: 17) // 断言验证 XCTAssertNotNil(textField.font, "Roboto-Regular字体加载失败") XCTAssertEqual(textField.font?.fontName, "Roboto-Regular", "文本框未使用指定的Roboto-Regular字体") XCTAssertEqual(textField.font?.pointSize, 17, "字体大小不符合预期值") } // 单独验证Roboto-Bold字体加载是否正常 func testRobotoBoldFontLoading() { let testFont = UIFont.robotoBold(size: 17) XCTAssertNotNil(testFont, "Roboto-Bold字体加载失败") XCTAssertEqual(testFont?.fontName, "Roboto-Bold", "Roboto-Bold字体名称不匹配") } }
附:UIFont扩展代码
import UIKit extension UIFont { static func robotoRegular(size: CGFloat) -> UIFont? { return UIFont(name: "Roboto-Regular", size: size) } static func robotoBold(size: CGFloat) -> UIFont? { return UIFont(name: "Roboto-Bold", size: size) } }
内容的提问来源于stack exchange,提问作者Gucci
相关产品推荐
相关产品推荐

