如何测试Xcode源代码编辑器扩展?

时间:2016-12-17 20:53:01

标签: xcode xctest

我正在编写XCode源编辑器扩展,我想添加一些测试,以便我可以更快地开发。

我的设置是

MyContainerApplication
  - SourceEditorExtension
    - SourceEditorCommand.swift
    - MyClass.swift

我想测试MyClass.swift。 MyContainerApplication具有SourceEditorExtension的目标依赖性。

所以我创建了单元测试,将MyContainerApplication设置为主机应用程序。

在我的测试中,我可以打电话:

@testable import MyContainerApplication

class Test: XCTestCase {

    func testSomething() {

         let c = MyClass()
    }
}

但XCode说无法找到MyClass,这是有道理的,因为它不包含在HostApplication中,而是包含在SourceEditorExtension中。我也打不开

@testable import SourceEditorExtension

因为它不是模块。

我无法将MyClass.swift直接添加到我的测试目标或主机应用程序目标,因为它使用XcodeKit框架。我会收到一个错误:

XcodeKit module not found

看起来XcodeKit无法在SourceEditorExtension中的任何地方导入,甚至在测试中也是如此。

所以我的问题是 - 是否有其他方法来测试源编辑器扩展?

2 个答案:

答案 0 :(得分:0)

您可以在此处查看单元测试的完成情况SwiftInitializerGenerator。可测试代码在两个目标之间共享。并且没有@testable内部测试。尝试摆脱类中XcodeKit的任何依赖。可能现在它是扩展测试的一种方式

答案 1 :(得分:0)

确保将MyClass.swift设置为SourceEditorExtensionMyContainerApplicationTests