我遇到的问题是Xcode IDE 6没有正确检测到我的快速单元测试用例。当我运行单元测试时,所有测试都已执行。
但是在IDE中,编辑单元测试时无法识别。我必须运行整个单元测试套件才能运行单个测试。
我无法弄清楚如何避免这种故障。
答案 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)
以下是此问题的解决方案:
等待一段时间。有时加载钻石需要时间。 在不同文件之间导航,然后转移到应该出现的相同测试用例。
清理项目,清理构建文件夹甚至删除派生数据内容。选中此how to delete derived data safely.
退出Xcode 并再次打开。
确保您的测试用例名称以 testFunc_Name
有时您的测试用例文件可能包含测试用例以外的功能。在这种情况下,菱形符号不会出现。 Remove such function.
在我的情况下,1,3和5解决方案通常对我有效。
答案 4 :(得分:6)
我也有同样的问题。只需确保每个测试用例都有某种XCTAssert()语句。
func testSomething(){
XCTAssert(true, "Pass")
}
答案 5 :(得分:3)
(由于您的评论表明您在一周后仍然遇到此问题,这可能对您没有帮助,但是......)
我遇到了这个问题,在6.1中添加一个新的(Swift)测试并不会让它出现在" Test Navigator"或方案编辑器 - 重新启动Xcode解决了问题,现在我可以单独运行测试。
答案 6 :(得分:3)
我的完整答案是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)
答案 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)
答案 15 :(得分:0)