XCode 5测试符号"rT"意味着什么?

pla*_*pus 36 xcode ios7 xcode5 xcode5.0.1

我在XCode 5项目中有2个测试类:

ABCDataModelTests {H,M}

- (void)testAlwaysPassing { ... }
Run Code Online (Sandbox Code Playgroud)

ABCDataModelListColorsTests.m,它继承自ABCDataModelTests.

- (void)testNumberOfListColorsGreaterThan7 { ... }
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,我注意到子类的测试下面有一个符号"rT",如图所示.

"rT"代表什么?请注意,子类继承测试方法"testAlwaysPassing".

我在Apple文档中找不到任何"XCode 5/5.0.1中的新功能".是否有任何符号代表所有符号的文档?

在此输入图像描述

voi*_*ref 31

我在一些论坛上发现了这些信息:

在SenTestingKit/OCUnit/XCTest中执行操作的标准方法是在代码中声明测试.如果你这样做,Xcode将使用索引静态地发现它们(即不在运行时).一旦发现Xcode这些测试,它们就会在测试导航器中显示"t"图标.到现在为止还挺好.

现在,SenTestingKit/OCUnit/XCTest框架还允许您在运行时动态创建测试.我们的一些用户使用此功能的创造性用户,可能包装外部测试系统或创建测试以表示动态数据集.Xcode无法静态发现这些测试,只能在测试运行期间返回结果时查明它们的存在.发现后,它们将在测试导航器中显示"rT"图标."rT"是"运行时发现的测试"的缩写.

最后.如果您的项目存在任何错误/异常,导致索引无法完成或正确解析您的测试类,那么您的测试将不会被静态发现.您仍然可以成功构建并运行它们,在这种情况下,Xcode最终会将它们视为运行时发现的测试,并为它们提供"rT"图标.


And*_*ent 10

有趣.通过在IDE中复制另一个文件创建的测试类,我一直非常恼火.我之前已经复制了其他测试文件,所以这似乎不是问题.

测试类里面只有一个测试,紫色图标的另一个副作用和它作为运行时测试的分类是你不能用测试运行器中提供的小三角图标触发其他测试的测试或测试类.

测试资源管理器中的上下文菜单提供了测试"testBlah",它似乎可以进行测试.

退出XCode,删除xcuserdata文件夹并重建使测试再次被识别为正常测试.

我收到旧版Visual Studio版本的提醒,这些版本曾经存在缓存问题,需要定期删除其本地上下文数据!

  • 当所有测试开始显示"rT"图标时,通常意味着您的索引无法正常工作.不需要删除xcuserdata.删除派生数据文件夹通常就足够了.要删除派生数据,请打开管理器选择项目,然后单击"删除..."按钮.另见[answer](http://stackoverflow.com/a/10339515/1272679). (8认同)
  • 我刚刚重新启动Xcode,它工作正常 (6认同)