iOS 测试时出错

标签 ios unit-testing

我正在尝试测试(不是运行)我的应用程序,但出现以下错误:

Thread 1: EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)

它指向我的 View Controller 的 initWithNibName 中的一行。

@synthesize messageTextView;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
    {
        /*
        some code
        */
     //This is the line where the exception points:
     messageTextView = [[UITextView alloc]initWithFrame:CGRectMake(0, 306, 320, 110)];
        /*
        some other code
        */


    }
    return self;
}

我的 View Controller 的 .h 文件如下所示:

@interface SMMenuViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate ,UITextViewDelegate> 
{
        /*
        some code
        */

}

@property (retain, nonatomic) IBOutlet UITextView *messageTextView;

我还在 viewDidUnload 中“nil”messageTextView。

我不知道到底出了什么问题,因为当我运行它时它工作正常,它只在测试期间失败。

非常感谢任何帮助!

真诚的,

佐利

最佳答案

首先,您不需要分配/初始化被引用为 IBOutlet 的 View (它由您的 xib/Storyboard 自动实例化)。

现在,您真正应该做的是将 View 自定义移动到 viewDidLoad 方法中,因为 View 层次结构未在 init 上加载(因此实际上您的所有 View 都是nil 到那时)。当您第一次尝试访问层次结构中的某个 View 时,它会被加载。

所以基本上你可以做这样的事情:

- (void)viewDidLoad
{
    [self.messageTextView setFrame:CGRectMake(0, 306, 320, 110)];
}

我希望这是有道理的......

关于iOS 测试时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12405873/

相关文章:

ios - 如何限制 UITableViewController 中的多选

ios - 我可以从实现文件创建 .xib 吗?

ios - 如何在自定义 Xcode 项目模板中创建或定义新目标

swift - Xcode 9.4 不显示单元测试

unit-testing - 1000s 或 URL 的测试和开发环境之间的回归测试?

python - Django REST UnitTest 没有提交文件

iOS swift UICollectionviewcell 快照错误

ios - 如何在 Swift 中创建弱引用字典?

python - 无法模拟从另一个类继承的类(创建/使用单例对象)

unit-testing - 比较单元测试中的当前时间