目前,单元测试正在处理大量的问题。我试图在我的BannerAdViewController-class上运行测试,但当到达以下行时,一切都崩溃了:
UITextView *buyAppTextView = [[UITextView alloc] initWithFrame:CGRectMake(8, 2, 304, 50)];控制台输出如下:
-[__NSCFType markupDescription]: unrecognized selector sent to instance 0x1bc2de0这是它在崩溃发生之前达到的方法:
-(void)setup{
_bannerFrame = [self frameRectForBannerAd];
_bannerWrapperFrame = [self frameRectForBannerWrapperFrame];
UITextView *buyAppTextView = [[UITextView alloc] initWithFrame:CGRectMake(8, 2, 304, 50)];
[buyAppTextView setText:@"some text"];
[buyAppTextView setTextColor:[UIColor blackColor]];
[buyAppTextView setFont:[UIFont systemFontOfSize:10]];
[buyAppTextView setAutoresizingMask:UIViewContentModeScaleAspectFit];
[buyAppTextView setUserInteractionEnabled:NO];
_placeHolderBanner = [[UIView alloc] initWithFrame:_bannerFrame];
[_placeHolderBanner setBackgroundColor:[UIColor whiteColor]];
[[_placeHolderBanner layer] setBorderColor:[UIColor blackColor].CGColor];
[[_placeHolderBanner layer] setBorderWidth:1.0];
[_placeHolderBanner addSubview: buyAppTextView];
[[self view] setFrame:_bannerWrapperFrame];
[[self view] setBackgroundColor:[UIColor clearColor]];
[[self view] addSubview: _placeHolderBanner];
_iAdBanner = [[ADBannerView alloc] initWithFrame:CGRectZero];
[[self view] addSubview: _iAdBanner];
_iAdBanner.delegate = self;
_iAdBanner.hidden = YES;
}如果我注释掉与buyAppTextView有关的所有内容,测试运行得很好。(是的,如果您想知道的话,测试设备与UIKit链接在一起)。
哦,测试类看起来像这样
#import "NorBannerAdViewTests.h"
#import "NORBannerAdViewController.h"
@implementation NorBannerAdViewTests
NORBannerAdViewController *_adViewController;
- (void)setUp{
[super setUp];
_adViewController = [[NORBannerAdViewController alloc] init];
}
- (void)tearDown{
[super tearDown];
[_adViewController release];
}
-(void) testThatFrameRectForBannerAdWrapperDoesNotReturnZero{
CGRect receivedFrame = [_adViewController frameRectForBannerWrapperFrame];
STAssertFalse((CGRectIsEmpty(receivedFrame)), @"receivedFrame should not be zero");
}
-(void) testThatFrameRectForBannerAdDoesNotReturnZero{
CGRect receivedFrame = [_adViewController frameRectForBannerAd];
STAssertFalse((CGRectIsEmpty(receivedFrame)), @"receivedFrame should not be zero");
}
@end发布于 2013-01-07 19:20:01
经过广泛的谷歌搜索,并追踪了一些相关的帖子,我(有点令人惊讶)设法解决了这个问题。问题源于在创建项目时没有设置Test目标。因为它是基于一个Cocos2D模板,所以我必须自己添加它。这样做,我没有将测试目标的构建设置与应用程序挂钩。
我必须将以下两个标志添加到测试目标的构建设置中,现在测试运行良好:
Bundle Loader: $(BUILT_PRODUCTS_DIR)/AppName.app/AppName
Test Host: $(BUNDLE_LOADER)https://stackoverflow.com/questions/14143939
复制相似问题