在测试方法中重写 Inner Class 中的函数会导致构建失败
Overridding a function in an Inner Class within a test method results in build failure
我有以下测试方法
func testSomeClassBehaviour() {
class TestClass:base{
//Block starts here------
override func someFunction() -> [String : String] {
return Dictionary<String,String>()
}
//end---------
}
let (result1,Result2) = Utility().processTestObject(testClass())
XCTAssert("Processed Overridden value","expected value","Some test call")
}
使用上述方法构建失败并出现错误 "Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1"。
在堆栈溢出中搜索建议后,问题缩小到测试文件,并准确指向评论中的代码块。
一旦我注释掉被覆盖的函数,它就会构建并运行,但不会与被覆盖的函数一起运行。
有什么建议吗
您似乎在 swift 编译器中发现了错误 – 您应该 file a radar.
这是我能得到的最小复制品:
import Foundation
@objc class Outer {
func method() { }
}
func f() {
class Inner: Outer {
override func method() { }
}
}
必须是 @objc
class,Inner
必须覆盖 Outer
中的方法,并且必须在函数中局部定义。
P.S。你改变了你的大写约定,Swift约定是classes以大写字母开头,但函数和变量以小写字母开头。
我有以下测试方法
func testSomeClassBehaviour() {
class TestClass:base{
//Block starts here------
override func someFunction() -> [String : String] {
return Dictionary<String,String>()
}
//end---------
}
let (result1,Result2) = Utility().processTestObject(testClass())
XCTAssert("Processed Overridden value","expected value","Some test call")
}
使用上述方法构建失败并出现错误 "Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1"。
在堆栈溢出中搜索建议后,问题缩小到测试文件,并准确指向评论中的代码块。
一旦我注释掉被覆盖的函数,它就会构建并运行,但不会与被覆盖的函数一起运行。
有什么建议吗
您似乎在 swift 编译器中发现了错误 – 您应该 file a radar.
这是我能得到的最小复制品:
import Foundation
@objc class Outer {
func method() { }
}
func f() {
class Inner: Outer {
override func method() { }
}
}
必须是 @objc
class,Inner
必须覆盖 Outer
中的方法,并且必须在函数中局部定义。
P.S。你改变了你的大写约定,Swift约定是classes以大写字母开头,但函数和变量以小写字母开头。