Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将助手方法添加到Xcode中的XCTestCase单元?_Ios_Objective C_Xcode_Xctest - Fatal编程技术网

Ios 如何将助手方法添加到Xcode中的XCTestCase单元?

Ios 如何将助手方法添加到Xcode中的XCTestCase单元?,ios,objective-c,xcode,xctest,Ios,Objective C,Xcode,Xctest,有没有一种方法可以将一个方法添加到您的XCTestCase中,而不将其计为测试?类似于已存在的setUp和tearDown 一个用例是在特定的时间点对我的一些测试用例中的对象执行特定的操作,同时访问类本身的实例变量(它可以使用静态方法和外部帮助文件)只有以测试开始的方法才会被视为测试。因此,只需将助手方法命名为不是以test开头的方法 顺便说一下,我不想在助手方法中放入xctasert语句。它起作用(适当的测试将失败),但在某些情况下,很难破译是哪些测试导致helper方法中的assert触发。

有没有一种方法可以将一个方法添加到您的XCTestCase中,而不将其计为测试?类似于已存在的
setUp
tearDown


一个用例是在特定的时间点对我的一些测试用例中的对象执行特定的操作,同时访问类本身的实例变量(它可以使用静态方法和外部帮助文件)

只有以
测试开始的方法才会被视为测试。因此,只需将助手方法命名为不是以
test
开头的方法


顺便说一下,我不想在助手方法中放入
xctasert
语句。它起作用(适当的测试将失败),但在某些情况下,很难破译是哪些测试导致helper方法中的assert触发。

我使用Steve建议的
xctasert
函数中的可选
参数,因此测试失败出现在调用站点,并附加检查而不是测试,因此它不会被识别为测试失败

private func checkSunSetsInTheEast(callLine: UInt = #line) {
    XCTFail(callLine: #line)
}
如果您希望您的断言在实际测试中可见,另一种选择是:

func testSun() {
    XCTAssert(sunSetsInEast)
}

private var sunSetsInEast: Bool { return false }

保留测试前缀并将测试设置为
private
将停止它们作为测试运行,但XCode的UI仍会将它们识别为测试,因此最好避免在助手函数的开头添加测试前缀。

只需添加一个不以“test”开头的方法即可。哈利路亚,感谢you@Rob您应该将您的评论作为实际答案发布,以便Madeban能够接受。@hasseg谢谢。当我发表我的评论时,我认为问题不仅仅是方法名前缀。很高兴我们回答了Madeban的问题。另外,在Swift中,您可以为助手方法提供默认行号参数,并将其传递给
xctasert
。这样,测试失败将出现在正确的调用站点,而不是在helper方法中。例如:
func checkEqual(ustring:string,应为:string,line:UInt=#line){XCTAssertEqual(.string,应为,line:line)}