在测试方法中重写 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以大写字母开头,但函数和变量以小写字母开头。