我想写一些自定义测试Assert类型,并将它们显示在Xcode中,类似于XCTAssert()失败的显示方式:
的数据
有没有一种方法可以让我连接到Xcode并实现这一点?
我希望我自己的Assert函数以同样的方式内联显示它的错误:
的
到目前为止,我找到的最好的资源是Apple的XCTest source code,但我还不知道它是否包括负责显示错误UI的逻辑。
我想写一些自定义测试Assert类型,并将它们显示在Xcode中,类似于XCTAssert()失败的显示方式:
的数据
有没有一种方法可以让我连接到Xcode并实现这一点?
我希望我自己的Assert函数以同样的方式内联显示它的错误:
的
到目前为止,我找到的最好的资源是Apple的XCTest source code,但我还不知道它是否包括负责显示错误UI的逻辑。
4条答案
按热度按时间tzxcd3kk1#
最简单的方法是从您的自定义Assert调用
XCTFail()
,但要沿着调用站点的文件名和行号。举例来说:字符串
在调用站点,您将让默认参数提供
file
和line
。所以它看起来就像:型
在Swift中,XCTestAssert是全局函数。这意味着你的helper也可以是一个全局函数,并且在测试套件中共享,而不必子类化
XCTestCase
。exdqitrt2#
完全有可能做到你所希望的,我只是设法做到了,就像这样:
使用
recordFailure
在任何测试中,只需调用
recordFailure
(继承自标准XCTestCase
),就可以实现您想要的结果。更短的语法
扩展
XCTestCase
如果你想简化对这个函数的调用,你可以写一个扩展函数来 Package 它。
或子类
您也可以子类化
XCTestCase
(如果您想共享一些设置,在setup
中调用,这是一个好主意,您只需在这个新的超类中将其调用到测试类即可)。字符串
我不知道如何使用
expected: Bool
,它是recordFailure
方法(源代码)的一个必需参数,但看起来苹果大多数情况下都将其设置为false
。自定义Assert方法
现在,您可以声明自定义的assert方法,如下所示(或者仅作为
XCTestCase
上的扩展,具体取决于您的选择):型
现在它报告错误,**不是在自定义Assert内,而是在调用点。
使用标准Assert方法+文件中的转发位置
您也可以只转发的
line
,并传递给标准Assert,如果您查看例如XCTAssertTrue
,它接受行参数和file
参数。“7cwmlq893#
有了
Xcode 12
,我们可以使用XCTIssue
内联Assert,现有的recordFailure
已被弃用。下面是测试的例子字符串
下面是失败Assert的屏幕截图
的数据
wz3gfoph4#
Xcode 14
一个简单的解决方案是将
file
和line
值从调用站点传递到您的自定义测试Assert中,然后在XCTAssert调用中使用这些值:自定义测试Assert:
字符串
这将提供与本地调用assert相同的失败消息:
的数据