Xcode 6编辑器不能识别unit testing

我有一个问题,Xcode IDE 6不能正确检测我的swiftunit testing用例。 当我运行unit testing时,所有的testing都被执行了。

但是在编辑IDE的时候,unit testing是不能识别的。 我必须运行整个unit testing套件才能运行单个testing。

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

在这里输入图像说明

问题解决了。 我所要做的就是启动“窗口 – >项目”窗口,并删除“派生数据。索引后,所有的testing正在工作。

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

对我来说,解决的办法是用“testing”

func arrayResponseCall() 

应该:

 func testArrayResponseCall() 

对我来说“修理”是增加一个新的testing。 我做了一些废话:

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

当我再次运行testing时,该文件中的所有testing都被编辑器识别。 我删除了这个虚假的testing,一切都还好。 不幸的是,我不得不在每个文件中都这样做,但至less它是有效的。 希望这有助于某人。

下面是这个问题的几个解决scheme:

  1. 等一下 有时需要花费时间加载钻石。 在不同的文件之间导航,然后移动到它应该出现的相同的testing用例

  2. 清理项目,清理生成文件夹 ,甚至删除派生的数据内容。 检查如何安全地删除派生的数据。

  3. 退出Xcode并再次打开。

  4. 确保您的testing用例名称以 testFunc_Name 开头

  5. 有时你的testing用例文件可能包含testing用例以外的函数。 在这种情况下,菱形符号不会出现。 Remove such function.

在我的情况下,1,3和5解决scheme经常为我工作。

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

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

(由于你的评论表明你一周后仍然有这个问题,这可能不会帮助你,但是…)

我遇到了这个问题,在6.1中添加一个新的(Swift)testing不会在“testing导航器”或scheme编辑器中显示 – 重新启动Xcode解决了问题,现在我可以单独运行testing。

Xcode 7

我的完整答案在这里 。

在Xcode 7中获得unit testing比在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 } } 

您可能还需要将您的应用程序的“生成设置”中的“打包”下的“定义模块”设置为“是”。

另请参阅以下答案:

确保testing用例名称以“test”开头,后跟您想要创build的任何名称,然后构build(cmd + B)项目。钻石将出现!!

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

唯一解决我的问题是删除我的整个testing类(暂时保存其他内容),然后重新创buildtesting类(也许更仔细?)再次设置生成设置。

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

当你添加一个新的testing时,保存文件(Cmd + S),钻石就会出现(在Xcode 7.3上validation)

对我来说,我需要在这里添加testing 在这里输入图像说明

对于我来说,selectProduct->Test就足够了,稍等一下。 当testing刚刚开始运行时,所有钻石都可用