Xcode 6 Editor无法识别单元测试

时间:2014-11-01 14:20:44

标签: ios unit-testing ide xcode6 xctest

我遇到的问题是Xcode IDE 6没有正确检测到我的快速单元测试用例。当我运行单元测试时,所有测试都已执行。

但是在IDE中,编辑单元测试时无法识别。我必须运行整个单元测试套件才能运行单个测试。

我无法弄清楚如何避免这种故障。

enter image description here

16 个答案:

答案 0 :(得分:56)

问题解决了。我所要做的就是启动“Window - > Projects”窗口并删除“派生数据。索引后所有测试都正常工作。

与此同时,苹果正在逐步修复Xcode 6.3编辑器中的错误。

答案 1 :(得分:20)

对我而言,修复方法是在所有方法前加上'test'

即。

func arrayResponseCall() 

应该是:

func testArrayResponseCall()

答案 2 :(得分:13)

"修复"对我来说是添加一个新的测试。我编造了一些废话:

func testThatNothing() {
    XCTAssertTrue(true, "True should be true")
}

当我再次运行测试时,编辑器会识别该文件中的所有测试。我删除了虚假测试,但一切都还好。不幸的是我必须在每个文件中执行此操作,但至少它可以工作。希望这有助于某人。

答案 3 :(得分:8)

以下是此问题的解决方案:

  1. 等待一段时间。有时加载钻石需要时间。 在不同文件之间导航,然后转移到应该出现的相同测试用例

  2. 清理项目,清理构建文件夹甚至删除派生数据内容。选中此how to delete derived data safely.

  3. 退出Xcode 并再次打开。

  4. 确保您的测试用例名称以 testFunc_Name

  5. 开头
  6. 有时您的测试用例文件可能包含测试用例以外的功能。在这种情况下,菱形符号不会出现。 Remove such function.

  7. 在我的情况下,1,3和5解决方案通常对我有效。

答案 4 :(得分:6)

我也有同样的问题。只需确保每个测试用例都有某种XCTAssert()语句。

func testSomething(){
     XCTAssert(true, "Pass")
}

答案 5 :(得分:3)

(由于您的评论表明您在一周后仍然遇到此问题,这可能对您没有帮助,但是......)

我遇到了这个问题,在6.1中添加一个新的(Swift)测试并不会让它出现在" Test Navigator"或方案编辑器 - 重新启动Xcode解决了问题,现在我可以单独运行测试。

答案 6 :(得分:3)

Xcode 7

我的完整答案是here

在Xcode 7中,获取单元测试设置比在Xcode 6中更容易(不需要将类和方法注释为public)。在导入类名之前使用@testable

import XCTest
@testable import MyProject

class MyClassTests: XCTestCase {

    func testMyMethod() {

        let myClass = MyClass()
        let sum = myClass.addTwoNumbers(1, 2)

        XCTAssertEqual(sum, 3)
    }
}

在课堂上你不需要做任何特别的事。

class MyClass {

    func addTwoNumbers(a: Int, b: Int) -> Int {
        return a + b
    }
}

您可能还需要将“打包”下的“定义模块”设置为“应用”构建设置的“是”。

另见这些答案:

答案 7 :(得分:3)

确保测试用例名称以“test”开头,后跟任意名称,然后构建(cmd + B)项目。钻石将出现!!。

答案 8 :(得分:2)

我有一个类似的错误(尽管在Objective C中,不是很快)。如果我在类中添加了一个新的测试方法,那么新方法将不会显示在测试导航器中,也不会在我运行整个包时执行。我也不会在每个方法旁边的侧栏中获得这些点,如果点击,只会运行一种测试方法。

唯一解决我的问题的是删除我的整个测试类(暂时将其内容保存在其他地方),然后重新创建测试类,并且(可能更仔细?)重新设置构建设置。

答案 9 :(得分:2)

对我来说,我需要在下面添加测试enter image description here

答案 10 :(得分:1)

有时您需要做的就是等待Xcode完成索引所有文件。对于大型项目,我的单元测试导航器视图通常是空的,直到完成。

答案 11 :(得分:1)

对我来说,只需选择Product->Test就可以了。当测试刚刚开始运行时,所有的钻石都可用

答案 12 :(得分:1)

添加新测试时,保存文件(Cmd + S)并显示菱形(在Xcode 7.3上验证)

答案 13 :(得分:0)

我解决了我的问题,只需将private方法转换为public

因此,如果这是您面临的相同问题,请切换:

private func testString()

为:

public func testString()

答案 14 :(得分:0)

这对我有用。即使单元测试说它有0个测试可用,我还是单击了play,然后进行了所有4个测试,然后显示了出来。

enter image description here

答案 15 :(得分:0)

在我的情况下,我引用了导致问题的旧测试目标,因此我摆脱了丢失的目标并清理了解决方案,然后我的测试用例就可以正常工作了。

Xcode test Schemes

还请确保您创建的测试方法应始终以关键字"test"开头,否则Xcode将无法识别相同示例的测试方法

func test_getPhotos_With_Good_Request_Returns_PhotoCollection(){

    //ARRANGE

    //ACT

   //ASSERT

}

希望有帮助