2015-02-11 77 views
0

我创建了一个测试项目,发现的XCode生成一些名为测试类:为yourprojectname-ProjectTestsiOS和XCode的:了解自动测试

这是它的样子:

- (void)setUp { 
    [super setUp]; 
    // Put setup code here. This method is called before the invocation of each test method in the class. 
} 

- (void)tearDown { 
    // Put teardown code here. This method is called after the invocation of each test method in the class. 
    [super tearDown]; 
} 

- (void)testExample { 
    // This is an example of a functional test case. 
    XCTAssert(YES, @"Pass"); 
} 

- (void)testPerformanceExample { 
    // This is an example of a performance test case. 
    [self measureBlock:^{ 
     // Put the code you want to measure the time of here. 
    }]; 
} 

会任何人都可以向我解释如何使用这些自动化测试方法?有关于此的官方文档吗?

这些测试是否意味着用作UI测试或应用程序代码测试?或两者?

+0

链接到Apple文档(通过互联网搜索:https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/testing_with_xcode/Introduction/Introduction.html#//apple_ref/doc/uid/TP40014132 -CH1-SW1。还有一段来自WWDC 2014的视频:'#414 Testing in Xcode 6'(链接:https://developer.apple.com/videos/wwdc/2014/),我认为还有一个WWDC 2013视频 – 2015-02-11 00:54:19

+0

查看[Xcode 7中的UI测试](http://masilotti.com/ui-testing-xcode-7),详细介绍了如何编写测试和使用框架 – 2015-06-29 15:01:22

回答

1

您是通过XCTest执行UI测试,但它是为单元测试而设计的。仪器有UI Automation这是专为UI测试。

开放XCTestAssertions.h会给你一个很好的参考,包括在XCTest中。一般来说,所有的断言遵循类似的模式:

XCTAssertSomething(somethingBeingTested, @"A message to display if the test fails"); 

击中⌘5将打开测试导航仪,它可以让你运行所有测试中,所有的失败的测试,或单独的测试。您也可以通过单击编辑器中方法名称左侧的菱形图形来运行测试。

这里有一些提示我已经遇到当单元测试与XCTest

  • 在声明最后一个参数是可选的,但在某些情况下它来形容你要找的行为是非常有用的。

  • 测试不是以任何特定顺序运行,但是测试不应该依赖于任何其他测试。

  • 模拟对象让你测试远远超过基本断言。我喜欢OCMock

  • 您可以在您的测试中调试use instruments

最后,如果你有机会到另一台机器,你可以OSX服务器每日或每次提交,并通知你,如果有任何测试失败设立automatically run your tests

+0

感谢有用的链接。帮助我理解这一点。 – mm24 2015-02-13 01:08:23

1

这就是如何在Xcode中实现单元测试

setUp和TearDown方法用于准备测试单元(这是选择代码的一部分)所需的任何模拟数据。

这两种测试方法只是一个例子。通常作为代码单元的作者,你很清楚该单元应该做什么以及不该做什么。

使用测试方法测试单位如何满足假设和期望。该惯例是针对单位行为的每个假设/期望具有单独的测试方法。

例如给定的类处理字符串有一个方法来使所有字符串CAPS,你会测试传递任何随机nonCaps字符串仍然会返回所有CAPS。将non truing作为参数将返回nil或错误。

所以基本上你测试你的单位表现如预期。

单元测试背后有一个完整的理论,超出了这个线程的范围。只是谷歌它。

+0

感谢您的回答 – mm24 2015-02-13 01:09:20