我有一个抽象的UIViewController,它有方法可以测试。
@interface ABViewController : UIViewController
@property (nonatomic, strong) NSMutableArray *testResults;
- (void)test;
- (void)testFailedWithMessag:(NSString *)message;
@end
@implementation ABViewController
- (void)testFailedWithMessag:(NSString *)message
{
if(self.testResults == nil)
{
self.testResults = [NSMutableArray array];
}
[self.testResults addObject:message];
}
@end
这个类的基本思想是测试未列在.h。
上的私有方法测试例程在子类的“test”方法中有所体现。如下图所示。
RootViewController是ABViewController的子类。
@interface RootViewController ()
{
UIButton *testButton;
}
@end
@implementation RootViewController
- (void)viewDidLoad
{
[super viewDidLoad];
testButton = [[UIButton alloc] init];
}
- (void)test
{
if(testButton==nil)
[self testFailedWithMessag:@"testButton is nil"];
}
@end
XCTest如下。
- (void)testRootViewController
{
// allocation class instance
RootViewController *testClassInstance = [[RootViewController alloc] init];
// when
[testClassInstance view];
// implement test
[testClassInstance test];
// verify result
XCTAssertTrue(([[testClassInstance testResults] count] == 0), @"%@", [[testClassInstance testResults] description]);
}
我制作了ABViewController的几个子类并运行了单元测试。 LCOV显示测试覆盖率,但它只显示ABViewController。
我想在我的项目中看到所有viewControllers。有办法吗? 函数的数量与viewControllers的函数不匹配。为什么呢?