2015-10-20 2 views
0

Мне было интересно узнать о следующих вещах. Поскольку у меня есть различные методы, объявленные в расширениях классов, можно ли их тестировать с помощью XCTest?Единичные методы тестирования, заявленные в расширениях классов

Например, если расширение класса, содержащего метод Foo:

@interface FooClass() 

-(NSString*)foo; 

@end 

как можно проверить Foo: в тестовом классе?

Большое спасибо за помощь!

ответ

2

Вам не нужно тестировать внутренние методы, поскольку вы, возможно, чаще меняете его в процессе реализации. Тестирование необходимо из * .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 
Смежные вопросы