我创建了一个父测试用例类。我希望将其他测试用例从继承XCTestCase
更改为ParentTestCase
。
ParentTestCase.m:
@interface ParentTestCase : XCTestCase
@end
@implementation ParentTestCase
- (void)setUp {
[super setUp];
}
- (void)tearDown {
[super tearDown];
}
}
例如,我有另一个测试用例类,当我创建它时,我使用默认的XCTestCase
作为其父类。所以,代码是这样的:
// If I change this to ParentTestCase,
// I get error:
// "Can't find interface declaration for 'ParentTestCase'"
@interface OtherTestCase : XCTestCase
@end
@implementation OtherTestCase
- (void)setUp {
[super setUp];
}
- (void)tearDown {
[super tearDown];
}
}
如果我直接将上述代码的父类更改为ParentTestCase
,
我收到编译器错误:
"Can't find interface declaration for 'ParentTestCase'
但是如果我从头开始,创建一个新的测试用例类,在xcode弹出窗口中明确告诉ParentTestCase
的子类。那很好:
为什么直接更改现有代码中的父类不起作用?
如何重构现有的测试类以继承XCode中的另一个类?
====更新===
对于那些认为我应该导入标题的人来说,这是从头创建的类:
#import <XCTest/XCTest.h>
@interface SomeOtherTest : ParentTestCase
@end
@implementation SomeOtherTest
- (void)setUp {
[super setUp];
}
- (void)tearDown {
[super tearDown];
}
}
也没有来自XCode的标头导入。
我也试图像某些人建议的那样导入标题:
#import "ParentTestCase.h"
我收到错误'ParentTestCase.h' file not found
。我对此错误并不感到惊讶,因为单元测试类没有公共头文件。
答案 0 :(得分:0)
@Putz1103是对的 - 您需要导入标头才能使用子类。如果从问题中显示的弹出窗口生成一个类,顶部是否有导入语句?
测试类在同一个文件中有标题和实现,因为它更整洁(不需要为每个类都有两个文件,因为你通常不会继承)。没有什么可以阻止您手动创建头文件并导入它。
使用iOS / Source / Cocoa Touch Class模板添加父类,并选择XCTestCase作为超类。这将生成一个单独的头和实现文件。然后,您将能够在其他任何位置导入该标头。