我有一个问题,Xcode IDE 6没有正确检测到我的swift单元测试用例。当我运行单元测试时,所有的测试都被执行了。Xcode 6编辑器无法识别单元测试
但是在编辑单元测试的IDE中无法识别。我必须运行整个单元测试套件才能运行单个测试。
我想不出我是如何避免这个故障。
我有一个问题,Xcode IDE 6没有正确检测到我的swift单元测试用例。当我运行单元测试时,所有的测试都被执行了。Xcode 6编辑器无法识别单元测试
但是在编辑单元测试的IDE中无法识别。我必须运行整个单元测试套件才能运行单个测试。
我想不出我是如何避免这个故障。
问题解决了。我所要做的就是启动“窗口 - >项目”窗口并删除“派生数据。索引后所有测试正在工作。
与此同时,苹果正在修复Xcode 6.3编辑器中的错误。
在我的版本(6.2)下它的文件 - >项目设置 – styler1972 2015-04-01 14:55:18
没有为我解决(6.4) – Daniel 2015-08-20 09:12:19
在Xcode 7中为我工作。必须在删除派生数据后关闭Xcode,然后重启。 – 2015-09-29 00:04:52
(因为您的评论表示您仍然有一个星期后,这个问题,这可能帮不了你,但是......)
我就遇到了这个问题,即增加一个新的(SWIFT) 6.1中的测试不会让它显示在“测试导航器”或方案编辑器中 - 重新启动Xcode解决了问题,现在我可以单独运行测试。
谢谢,重新启动并没有解决我的问题,我也在其他类的swift中。我相信我的项目设置与几个框架套件和扩展导致这种行为。 – ChaosSpeeder 2014-11-15 08:41:28
修复了我的问题......哦Xcode ... – lehn0058 2016-10-05 14:47:43
我有一个类似的错误(尽管在Objective C中,不是快捷)。如果我为这个类添加了一个新的测试方法,新的方法不会显示在测试导航器中,也不会在我运行整个包时执行。我也不会在每个方法旁边的边栏中获得这些点,如果点击它,只会运行一种测试方法。
唯一解决我的问题是删除我的整个测试类(暂时保存其他内容)然后重新创建测试类和(也许更仔细?)再次设置构建设置。
对我来说,“修复”是添加一个新的测试。我做了一些废话:
func testThatNothing() {
XCTAssertTrue(true, "True should be true")
}
当我再次运行测试,在该文件中所有的测试是由编辑认可。我删除了这个虚假测试,这一切都还好。不幸的是我不得不在每个文件中都这样做,但至少它是有效的。希望这可以帮助某人。
谢谢。看看我的答案。问题是过了一段时间内部派生的数据文件被搞乱了。您必须在一段时间后删除它们以执行重新处理或重新索引。 – ChaosSpeeder 2015-03-20 17:07:03
这应该被标记为答案 – Max 2016-08-04 16:15:38
我有同样的问题了。只要确保您的每一个测试用例有某种XCTAssert()语句。
func testSomething(){
XCTAssert(true, "Pass")
}
对该文件的任何编辑都适用于我。在文件中保留'XCTAssert'不会自动使它们被Xcode识别。 – 2015-06-03 19:31:30
好笑。我试过了,它没有像预期的那样工作,因为我已经有了名字为'test'的方法。但是,我在测试文件中有一个私有方法,并且通过评论说测试导航器中的测试再次显示它们是自测的。然后我取消注释,一切恢复正常。错误。 – JJacquet 2015-12-11 21:38:06
对我来说,伦敦定盘前面加上“测试”
所有方法ie
func arrayResponseCall()
应该是:
func testArrayResponseCall()
谢谢,但命名前缀是所有测试功能的要求。看看我的示例,其中方法名称是testExample()。从Xcode 6.3开始,这个bug已经被苹果解决了。 – ChaosSpeeder 2015-06-24 15:54:35
这给我修好了。这应该在文档中更清晰。我花了一个多小时试图找到这个bug! – Sethmr 2016-12-21 00:18:34
区分大小写!我尝试了30分钟,直到我注意到我写了“Test ..”而不是“test ..” – nablahero 2017-05-30 12:33:22
有时候,你需要做的是等待的Xcode来完成索引的所有文件。对于大型项目,我的单元测试导航器视图通常是空的,直到完成。
另外,有时您需要从目标中删除测试类并重新添加它。 – 2015-08-31 09:04:24
我完全的答案是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
}
}
您可能还需要在应用的构建设置下将“包装”下的“定义模块”设置为YES。
又见这些问题的答案:
下面是针对此问题的解决方案很少:
等待一段时间。有时需要花费时间加载钻石。 在不同文件之间导航,然后移动到它应该出现的相同测试案例。
清理工程,清理生成文件夹乃至删除派生的数据内容。检查这个how to delete derived data safely.
退出Xcode并再次打开它。
确保您测试用例的名字开始testFunc_Name
有时候你测试用例文件可能包含比测试用例等功能。在这种情况下,菱形符号不会出现。 Remove such function.
在我的情况下,1,3和5解决方案通常为我工作。
3.是解决方案! – kmak 2016-04-03 14:25:47
删除派生数据并重新启动XCode为我工作 – eliasbagley 2016-06-03 16:21:23
对我来说,选择Product->Test
就足够了,稍等一下。当测试刚刚开始运行时,所有钻石都可用
确保测试用例名称以“test”开头,后面跟着您想要创建的任何名称(cmd + B)项目。钻石将出现!!。
只要您更改为在函数名称中包含测试,它就会显示出来。傻我.. – 2017-01-23 10:56:41
当您添加一个新的测试,保存文件(加利福尼亚+ S)和钻石会出现
我解决了我的问题,只是将private
方法变为public
。
所以,如果这是你面临同样的problema,开关:
private func testString()
到:
public func testString()
我有同样的问题。尚无解决方案。在测试导航器中,我可以看到图标运行单个测试。但是,如果我通过单击这样一个图标来运行单个测试,则将执行所有测试,而不是仅单击我单击的那个测试。 – 2014-11-04 09:08:55
我的项目越发壮大,越糟糕。我在许多swift文件中没有IntelliSense。我希望,这些错误将会被更多版本的Xcode修复。 – ChaosSpeeder 2014-11-08 18:19:47
认真考虑直接在VIM中工作。 – Aaron 2016-03-02 14:35:33