【问题标题】:Swift Error - Method Does not override any method from its superclassSwift 错误 - 方法不覆盖其超类中的任何方法
【发布时间】:2018-03-22 14:27:46
【问题描述】:

我遇到了一个问题,当我试图重写一个函数时,它告诉我超类中没有方法。子类在 XCTest 中。当我在常规项目中进行子类化时,它可以正常工作,但 XCTest 由于某种原因无法正常工作下面是代码

超类

class BackupServerCell: UITableViewCell {
    @IBOutlet var serverNameLabel: UILabel!
    @IBOutlet var serverDescriptionLabel: UILabel!

    func configCell(with server: VeeamBackupServer) {

    }
 }

子类 - 位于 XCTest 文件中

class MockBackupServerCell : BackupServerCell {
    var configCellGotCalled = false

    override func configCell(with server: VeeamBackupServer) {
        configCellGotCalled = true
    }
}

【问题讨论】:

  • 尝试清理项目,然后构建并运行,然后再次运行测试

标签: swift overriding subclass xctest


【解决方案1】:

当您处理测试目标时,有时需要导入您的主项目。

假设您的项目名为“MyAwesomeProject”,只需在您的测试文件中添加这一行:

@testable 导入 MyAwesomeProject

要获得这样的东西:

import XCTest
@testable import MyAwesomeProject

class TestStaticQueries: XCTestCase {
    // Add your test methods here.
} 

【讨论】:

  • 我确实有这个在我班上名列前茅。奇怪的是,当我开始键入时,自动完成功能会正确放置。但是在我输入之后就会发生编译器错误。
  • @MatthewWandell,嗯...我建议您的最后一件事是尝试将您的测试目标添加为 BackupServerCell 类目标成员资格的成员。
【解决方案2】:

@DDelforge,部分正确。我必须将 BackupServerCell 类添加到测试目标。不知道为什么这个类是不同的,但是嘿,它有效。

谢谢大家

【讨论】:

  • 将生产代码添加到测试目标是错误的。这表明测试目标没有正确链接到您的生产目标。
猜你喜欢
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多