首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建UITextView时OCUnit崩溃

创建UITextView时OCUnit崩溃
EN

Stack Overflow用户
提问于 2013-01-04 01:23:44
回答 1查看 241关注 0票数 1

目前,单元测试正在处理大量的问题。我试图在我的BannerAdViewController-class上运行测试,但当到达以下行时,一切都崩溃了:

代码语言:javascript
复制
UITextView *buyAppTextView  = [[UITextView alloc] initWithFrame:CGRectMake(8, 2, 304, 50)];

控制台输出如下:

代码语言:javascript
复制
-[__NSCFType markupDescription]: unrecognized selector sent to instance 0x1bc2de0

这是它在崩溃发生之前达到的方法:

代码语言:javascript
复制
-(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链接在一起)。

哦,测试类看起来像这样

代码语言:javascript
复制
#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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-07 19:20:01

经过广泛的谷歌搜索,并追踪了一些相关的帖子,我(有点令人惊讶)设法解决了这个问题。问题源于在创建项目时没有设置Test目标。因为它是基于一个Cocos2D模板,所以我必须自己添加它。这样做,我没有将测试目标的构建设置与应用程序挂钩。

我必须将以下两个标志添加到测试目标的构建设置中,现在测试运行良好:

代码语言:javascript
复制
Bundle Loader: $(BUILT_PRODUCTS_DIR)/AppName.app/AppName
Test Host: $(BUNDLE_LOADER)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14143939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档