GHUnit: Unit Testing Objective-C for the iPhone

本文指导您如何在Objective-C项目中设置并使用GHUnit测试框架,包括环境配置、添加框架、链接参数设置、创建测试类及运行测试等步骤。

GHUnit is a test framework for Objective-C that runs on Mac OS X 10.5 and above and iPhone 3.x and above. It can be used standalone or with other testing frameworks like SenTestingKit or GTM.

These notes are for XCode 3.2.5. You can assume these steps are fragile and you need to follow them to the letter.

Setting Up the Environment

  1. Start XCode and create a new project by selecting New Project under the File menu,
    Create New Project Menu in XCode
  2. In the New Project popup, in the left column, select Application under iPhone OS. In the upper right panel, select Window-Based Application,
    New Project popup
  3. Select your device type. Chose iPhone for this example.
  4. Provide a name and a location. For this example, I will use the name Calculator and the directory will be the /Users/Nearsoft/Desktop.
  5. Now run your application. Use Mac Command Symbol-r or from the pull-down menu Build > Build and Run.
    Build Pulldown Menu
  6. As a result you should see the simulator, like this,
    iPhone simulator image
  7. Now, quit the simulator and switch back to XCode.

Adding GHUnit Framework to Our Project.

  1. Download the last version of GHUnit Framework (as of this writing, it is 0.4.27) from here.
  2. Unzip the ZIP file in the same directory where you saved your project. This will create the directory GHUnitIOS.framework.
  3. Add a new target to your project. Control-click (right-click) on Targets and select Add - New Target.
    Select Add - New Target
  4. In the left column select iOS - Cocoa Touch and Application. Give it a descriptive name. For this example, I will use UnitTests.
    Select iOS - Cocoa Touch and Applications
  5. We need to add a few Frameworks to our new Target. Right-click on our target, select then Add and then choose Existing Frameworks. Lets add these three,
    1. CoreGraphics.framework
    2. Foundation.framework
    3. UIKit.framework
    Choose Existing Frameworks
  6. To add the GHUnitIOS.framework, you need click on the “Add Other…” button and choose the GHUnitIOS.framework directory which just unzipped in step 9, above.
  7. If you've done this right so far, you will see something like this,
    Choose GHUnitIOS.framework

Add a few linker flags to our project

  1. Choose the UnitTests target, control-click on it and choose Get info.
  2. Tab and look for Other Linker Flags and double-click on that option.
    Target "UnitTests" Info
  3. Add the following,
    1. -ObjC
    2. Add: -all_load
    3. Close that dialog.
  4. Once you add the flags you will see something like the image bellow,
    Target "UnitTests" Info
  5. Look for the UnitTests-Info.plist in the Groups & Files column, and edit the option Main nib file base name.  Then, delete this value (i.e., by clearing the field) and save it.
    UnitTests-Info.plist screen

Add the GHUnitIOSTestMain.m

  1. Download GHUnitIOSTestMain. You can download it form here.
  2. Create a new Group in our project. I will call it UnitTests.
  3. Inside UnitTests Group add the GHUnitIOSTestMain.m,
    1. Right click on UnitTests Group, select Add – Existing Files…
    2. Look for the file just download and double-click on it.
    3. Checkmark Copy items into destination group's folder (if needed), and then click the Add button.

    Copy Items popup
  4. Once you do that, Build and Run the UnitTests target.

NOTE: if you have a compilation error in the line #import <GHUnitIOS/GHUnit.h> change it for #import <GHUnit/GHUnit.h>

  1. If you see this image, you've done well.
    Simulator Test

Create a Test

  1. Under the UnitTest Group, right click select Add - New File, an Objective-C class (under iOS – Cocoa Touch Class).
  2. Name it FirstTest.m. For Unit Test files, we do not need create a header file. So uncheck the option Also create "…".h. Verify that UnitTeststarget is selected.
  3. Then click Finish
    New NSObjects subclass popup
  4. Enter this code in the FirstTest.m file,
    //
    //  FirstTest.m
    //  Calculator
    //
    //  Created by Jesus Guerra on 3/9/11.
    //  Copyright 2011 Nearsoft. All rights reserved.
    //
    #import
    @interface FirstTest : GHTestCase {
        NSString *stringValue;
    }
    @end

    @implementation FirstTest

    -(void)setUp {
        stringValue= @"Hello World";
    }

    -(void)tearDown {
        stringValue= nil;
    }

    -(void)testCompareTwoStrings {
        GHAssertEquals(@"", stringValue, @"The value is not the same than '%@'", stringValue);
    }
    @end
  5. You will then have something like this,
    FirstTest.m popup
  6. After that, Build and Run UnitTest target.
  7. When the simulator shows up, tap on Run. The test will fail, so just go back to your code and change the assertion in the method testCompareTwoStrings,
    GHAssertEquals(@"Hello World", someVariableToInitialize, @"The value is not the same as '%@'", someVariableToInitialize);
    Simulator Test Results

And Finally …

Congratulations, we did it!



转载自:http://www.nearsoft.com/blog/printblog.html?index_php?view=article&id=305&tmpl=component&print=1


物联网通信协议测试是保障各类设备间实现可靠数据交互的核心环节。在众多适用于物联网的通信协议中,MQTT(消息队列遥测传输)以其设计简洁与低能耗的优势,获得了广泛应用。为确保MQTT客户端与服务端的实现严格遵循既定标准,并具备良好的互操作性,实施系统化的测试验证至关重要。 为此,采用TTCN-3(树表结合表示法第3版)这一国际标准化测试语言构建的自动化测试框架被引入。该语言擅长表达复杂的测试逻辑与数据结构,同时保持了代码的清晰度与可维护性。基于此框架开发的MQTT协议一致性验证套件,旨在自动化地检验MQTT实现是否完全符合协议规范,并验证其与Eclipse基金会及欧洲电信标准化协会(ETSI)所发布的相关标准的兼容性。这两个组织在物联网通信领域具有广泛影响力,其标准常被视为行业重要参考。 MQTT协议本身存在多个迭代版本,例如3.1、3.1.1以及功能更为丰富的5.0版。一套完备的测试工具必须能够覆盖对这些不同版本的验证,以确保基于各版本开发的设备与应用均能满足一致的质量与可靠性要求,这对于物联网生态的长期稳定运行具有基础性意义。 本资源包内包含核心测试框架文件、一份概述性介绍文档以及一份附加资源文档。这些材料共同提供了关于测试套件功能、应用方法及可能包含的扩展工具或示例的详细信息,旨在协助用户快速理解并部署该测试解决方案。 综上所述,一个基于TTCN-3的高效自动化测试框架,为执行全面、标准的MQTT协议一致性验证提供了理想的技术路径。通过此类专业测试套件,开发人员能够有效确保其MQTT实现的规范符合性与系统兼容性,从而为构建稳定、安全的物联网通信环境奠定坚实基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值