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:
-
等一下 有时需要花费时间加载钻石。 在不同的文件之间导航,然后移动到它应该出现的相同的testing用例 。
-
清理项目,清理生成文件夹 ,甚至删除派生的数据内容。 检查如何安全地删除派生的数据。
-
退出Xcode并再次打开。
-
确保您的testing用例名称以
testFunc_Name
开头 -
有时你的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 } }
您可能还需要将您的应用程序的“生成设置”中的“打包”下的“定义模块”设置为“是”。
另请参阅以下答案:
- 如何在Xcode中进行unit testing
- https://stackoverflow.com/a/25477915/3681880
- https://stackoverflow.com/a/29435815/3681880
确保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刚刚开始运行时,所有钻石都可用