在类扩展中声明的单元测试方法
Posted
技术标签:
【中文标题】在类扩展中声明的单元测试方法【英文标题】:Unit testing methods declared in class extensions 【发布时间】:2015-10-20 11:19:45 【问题描述】:我对以下事情感到好奇。由于我在类扩展中声明了各种方法,是否可以使用 XCTest 对它们进行单元测试?
例如,给定一个包含方法 foo 的类扩展:
@interface FooClass()
-(NSString*)foo;
@end
如何在测试类中测试 foo:?
非常感谢您的帮助!
【问题讨论】:
【参考方案1】:您不需要在方法内部进行测试,因为您可能会在流程实现中更频繁地更改它。测试需要来自 *.h 文件,但如果需要,您可以创建测试类别。你也可以使用运行时(例如——performSelector)
RSFooClass.h
#import <Foundation/Foundation.h>
@interface RSFooClass : NSObject
@end
RSFooClass.m
#import "RSFooClass.h"
@implementation RSFooClass
- (NSString *)foo
return @"Hello world";
- (NSInteger)sum:(NSInteger)a with:(NSInteger)b
return a + b;
@end
RSFooClassTest.m
#import <XCTest/XCTest.h>
#import "RSFooClass.h"
@interface RSFooClass (Testing)
- (NSString *)foo;
- (NSInteger)sum:(NSInteger)a with:(NSInteger)b;
@end
@interface RSFooClassTest : XCTestCase
@property (strong, nonatomic) RSFooClass *foo;
@end
@implementation RSFooClassTest
- (void)setUp
[super setUp];
// Put setup code here. This method is called before the invocation of each test method in the class.
self.foo = [[RSFooClass alloc] init];
- (void)testFoo
NSString *result = [self.foo foo];
XCTAssertEqualObjects(result, @"Hello world");
- (void)testSumWith
NSInteger a = 1;
NSInteger b = 3;
NSInteger result = [self.foo sum:a with:b];
NSInteger expected = a + b;
XCTAssertEqual(result, expected);
@end
【讨论】:
以上是关于在类扩展中声明的单元测试方法的主要内容,如果未能解决你的问题,请参考以下文章