美文网首页iOS精品文章-单元测试iOS翻译无法删除的专题
翻译:使用Xcode测试(一)——快速入门(Quick Star

翻译:使用Xcode测试(一)——快速入门(Quick Star

作者: 栗子烤肉 | 来源:发表于2016-05-31 09:30 被阅读324次

    这个快速入门的目的是告诉你可以在开发项目中加入测试,使测试更加简单方便。

    介绍测试导航(test navigator)

    当进行测试时,你会经常使用到Xcode的测试导航(test navigator)。
    测试导航(test navigator)是workspace的一部分,使创建、管理、运行和评估测试更加加单。通过点击导航选择栏中的图标进入测试,该图标在问题导航和调试导航之间。当项目中有一系列定义的测试,你会看到如下图所示的导航视图。

    导航视图

    上面展示的测试导航(test navigator)包含示例项目测试包(test bundle)、类和方法。这个项目是一个计算器app的示例。计算引擎作为一个框架。你可以在SampleCalcTests测试的顶层看到用于测试应用的代码。

    注意:Xcode 测试目标(target)生成的测试包(test bundle)显示在测试导航(test navigator)处。

    如果测试使用asset数据文件、图像,可以将它们添加到测试包(test bundle)中,运行时使用NSBundle API访问。使用测试类+[NSBundle bundleForClass:]的确保获得正确bundle来检索asset。更多信息,参见NSBundle类引用(NSBundle Class Reference)。

    Xcode中的scheme控制built的内容。scheme还控制哪个可用的测试方法执行测试操作。可以单击测试导航(test navigator)列表中的项目,启用或禁用测试包(test bundle)、类和方法。从快捷菜单中选择启用或禁用,从而启动或禁用scheme中的项目。

    在这个视图的的测试包(test bundle)是SampleCalcTests。SampleCalcTests包括一个测试类,这个测试类包含九个测试方法。当将指示放在列表中的任何像时,该项目名称的右侧显示为运行按钮()。这种方法可以快速的运行bundle中的所有测试,类中的所有测试或其他单独的测试。测试返回通过或失败的结果到Xcode。测试被执行,这些指标会更新告知你结果,绿色的复选表示通过,红色的x表示失败。如测试导航(test navigator)所示,两个测试断言失败。

    测试导航

    在源编辑器打开测试类,点击展开列表中的任何测试类或测试方法。在源代码编辑器中测试类和测试方法同样被标记,这与测试导航(test navigator)中的方法相同。测试失败时,在源代码编辑器中显示相关断言的结果字符串。

    在测试导航(test navigator)的底部有添加按钮(+)和过滤控制。可以将视图缩小到只有scheme或失败的测试,你也可以通过名称筛选。

    有关测试导航(test navigator)操作的详细信息,参见测试导航(test navigator)帮助(测试导航(test navigator) Help)。

    添加测试到app

    Xcode5或更高版本中创建的新app,框架和library项目预先配置了测试目标(target)。当你开始使用一个新项目,打开测试导航(test navigator),你可以看到测试包(test bundle),测试类和测试方法模板。但你可能在较早版本的Xcode中打开一个已经存在的项目,还没有定义测试目标(target)。这里展示了一个已经存在、并没有加入测试的项目添加测试的流程。

    创建测试目标(target)

    当打开测试导航(test navigator),单击左下角添加按钮(+),从菜单中选择新的单元测试目标(target)。

    创建测试目标

    在下一个对话框中选择OS X或iOS单元测试包(test bundle)并单击下一步。在出现的新目标(target)设置助理,编辑产品名称和其他你需要的参数。

    设置

    单击完成,添加目标(target),它包含一个模板测试类和两个测试方法模板,测试导航(test navigator)图。

    测试导航
    运行测试并查看结果

    现在,你已经往项目中添加测试,你希望开发测试做一些有用的事情。首先,将指示放在测试导航(test navigator)中的SampleCalcTests测试类,点击运行按钮运行该类中的所有方法。在函数名旁边的源代码编辑器中有绿色勾标记结果。

    绿色勾标记

    模版单元和性能测试都是空的,这表明成功,没有失败的断言。注意34行measureBlock:方法旁边的灰色钻石图标。点击钻石图标显示性能结果面板。

    性能结果面板

    这个面板允许你设置性能基准线,并允许你编辑基准线和最大标准差参数。这些功能在之后讨论。

    编辑测试并再次运行

    因为示例项目是计算器app,你希望检查它是否正确执行加法、减法、乘法和除法运算,以及测试计算器的其他计算功能。因为测试是建立在应用项目上,你可以添加所有上下文或其他需要的信息进行测试。创建测试其实就是往单元测试实现问价中添加方法。

    例如,往SampleCalcTests.m文件中插入如下的 #import和实例变量声明。

    <pre><code>
    \#import <XCTest/XCTest.h>

    //

    // Import the application specific header files

    \#import "CalcViewController.h"

    \#import "CalcAppDelegate.h"

    @interface CalcTests : XCTestCase {

    // add instance variables to the CalcTests class

    @private

    NSApplication       *app;
    
    CalcAppDelegate     *appDelegate;
    
    CalcViewController  *calcViewController;
    
    NSView              *calcView;
    

    }

    @end
    </pre></code>

    然后给测试方法一个描述性名称,例如testAddition,并为该方法添加实现源代码。

    <pre><code>
    -(void) testAddition

    {

    // obtain the app variables for test access

    app = [NSApplication sharedApplication];

    calcViewController = (CalcViewController*)[[NSApplication sharedApplication]
    delegate];

    calcView = calcViewController.view;

    // perform two addition tests

    [calcViewController press:[calcView viewWithTag: 6]]; // 6

    [calcViewController press:[calcView viewWithTag:13]]; // +

    [calcViewController press:[calcView viewWithTag: 2]]; // 2

    [calcViewController press:[calcView viewWithTag:12]]; // =

    XCTAssertEqualObjects([calcViewController.displayField stringValue], @"8", @"Part 
    

    1 failed.");

    [calcViewController press:[calcView viewWithTag:13]]; // +

    [calcViewController press:[calcView viewWithTag: 2]]; // 2

    [calcViewController press:[calcView viewWithTag:12]]; // =

    XCTAssertEqualObjects([calcViewController.displayField stringValue], @"10", 
    

    @"Part 2 failed.");

    }
    </pre></code>

    注意,在测试导航(test navigator)中的列表改变,反映示例测试方法,即testExample变为testAddition。

    测试导航

    现在使用测试导航(test navigator)中的运行按钮(或源代码编辑器中的指示)来运行testAddition方法。

    断言失败

    正如你看到的,一个断言失败了,在测试导航(test navigator)和源代码编辑器中高亮显示。查看源代码,Part 1成功,Part 2出现问题。仔细检查,错误是显而易见的:在76行,应该是 [calcView viewWithTag:12],而不是[calcView viewWithTag:11]。纠正这个错误,测试成功。

    测试成功
    使用setUp()和 tearDown()方法

    Xcode可以一次运行测试包(test bundle)中所有测试类中的测试方法。在这个小例子中,在测试类中只实现了一个测试方法,它需要访问计算器app中三个变量对象。如果你在同一个类中写了四个或五个测试方法,你会发现在每个测试方法中都有相同的代码,访问app对象状态。XCTest 框架提供了测试类的实例方法,setUp和tearDown,分别在运行普通代码前调用,在每个测试方法运行后调用。

    setUp和tearDown的使用很简单。在Mac_Calc_Tests.m文件中的testAddition,剪切从// obtain the app variable for test access 开始的四行代码,并将其粘贴到模版中默认setUp实例方法中。

    <pre><code>
    -(void)setUp

    {

    [super setUp];
    
    // Put setup code here. This method is called before the invocation of each test 
    

    method in the class.

    // obtain the app variables for test access

    app = [NSApplication sharedApplication];

    calcViewController = (CalcViewController*)[[NSApplication sharedApplication]
    delegate];

    calcView = calcViewController.view;

    }

    </pre></code>

    现在添加更多测试方法testSubtraction及其他方法,这样可以使用最少重复代码。

    测试导航

    总结

    正如你看到的快速入门,往项目中添加测试非常简单。这里有一些需要注意的:

    • Xcode设置最基本的测试配置。当你往项目中添加一个新的测试目标(target),Xcode自动将其添加到相关产品目标(target)的scheme中。该目标(target)中会添加只有一个测试方法的初始测试类,可以在测试导航(test navigator)中看到。

    • 测试导航(test navigator)让你轻松定位和编辑测试方法。想要立即运行测试,可以使用测试导航(test navigator)中的指示按钮或者当测试类的实现是公开的,直接从源代码编辑器处运行。当测试失败,测试导航(test navigator)中的指示与源代码编辑器中的失败标记相匹配。

    • 一个测试方法可以包含多个断言,只有一个结果通过或失败。这种方法使你可以根据项目需求,创建简单或者非常复杂的测试。

    • setup和tearDown实例方法提供一种方法,使许多测试方法中使用的普通代码保持一致性,同时易于调试。

    官方原文地址:

    https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/02-quick_start.html#//apple_ref/doc/uid/TP40014132-CH2-SW1

    相关文章

      网友评论

        本文标题:翻译:使用Xcode测试(一)——快速入门(Quick Star

        本文链接:https://www.haomeiwen.com/subject/nvizrttx.html