【问题标题】:Overridding a function in an Inner Class within a test method results in build failure在测试方法中覆盖内部类中的函数会导致构建失败
【发布时间】:2015-06-10 22:58:56
【问题描述】:

我有以下测试方法

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”。

在堆栈溢出中搜索建议后,问题缩小到测试文件并准确指向 cmets 中的代码块。

一旦我注释掉被覆盖的函数,它的构建和运行,但不是被覆盖的函数。

请给点建议。

【问题讨论】:

    标签: ios iphone swift xctest


    【解决方案1】:

    看起来你在 swift 编译器中发现了一个错误——你应该file a radar

    这是我所能得到的最小复制:

    import Foundation
    
    @objc class Outer {
        func method() { }
    }
    
    func f() {
        class Inner: Outer {
            override func method() { }
        }
    }
    

    必须是 @objc 类,Inner 必须覆盖 Outer 中的方法,并且必须在函数中本地定义。

    附:你改变了你的大小写约定,Swift 约定是类以大写开头,但函数和变量以小写开头。

    【讨论】:

    • 谢谢!我将提交错误票。大小写问题是因为快速查找和替换。
    • 已在雷达中提出,希望其修复。
    猜你喜欢
    • 2019-06-11
    • 2021-11-28
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 2022-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多