iphone - 单元测试核心数据 - 异常退出,代码为 134

标签 iphone unit-testing core-data

我正在为我的核心数据应用程序设置单元测试。我在一个非常简单的测试中遇到了一个奇怪的问题。我收到的错误是:

/Developer/Tools/RunPlatformUnitTests.include:451:0 Test rig '/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk/Developer/usr/bin/otest' exited abnormally with code 134 (it may have crashed).

我的单元测试的标题是:

#import <SenTestingKit/SenTestingKit.h>
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "Unit.h"

@interface UnitLogicTests : SenTestCase {
    NSManagedObjectContext *managedObjectContext;
    NSPersistentStoreCoordinator *persistentStoreCoordinator;
    NSManagedObjectModel *managedObjectModel;
    NSPersistentStore *persistentStore;
}
@end

实现是:

#import "UnitLogicTests.h"

@implementation UnitLogicTests

#pragma mark Setup and Teardown
- (void)setUp {
    managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles: nil] retain];
    NSLog(@"model: %@", managedObjectModel);
    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel];
    persistentStore = [persistentStoreCoordinator addPersistentStoreWithType:NSInMemoryStoreType
                                                               configuration:nil
                                                                         URL:nil
                                                                     options:nil 
                                                                       error:NULL];
    managedObjectContext = [[NSManagedObjectContext alloc] init];
    [managedObjectContext setPersistentStoreCoordinator:persistentStoreCoordinator];
}

- (void)tearDown
{
    [managedObjectContext release];
    managedObjectContext = nil;
    NSError *error = nil;
    STAssertTrue([persistentStoreCoordinator removePersistentStore:persistentStore error:&error], 
                 @"couldn't remove persistent store: %@", error);
    persistentStore = nil;
    [persistentStoreCoordinator release];
    persistentStoreCoordinator = nil;
    [managedObjectModel release];
    managedObjectModel = nil;
}

#pragma mark -
#pragma mark Test Cases
- (void)testThatEnvironmentWorks
{
    STAssertNotNil(persistentStore, @"no persistent store");
}


- (void)testNewUnitDefaults {
    Unit *newUnit = [NSEntityDescription insertNewObjectForEntityForName:@"Unit" 
                                                  inManagedObjectContext:managedObjectContext];
    STAssertEquals(newUnit.floorNumber, 1, @"Default value for new Unit's floor number should be 1");

}

@end

如果我省略 - (void)testNewUnitDefaults 测试,则构建会毫无错误地完成,因此最后一个测试中的某些内容会使其陷入循环。我对此很陌生,因此我们将不胜感激!

谢谢。

最佳答案

我今天遇到了同样的问题,我认为 Martin Brugger 是对的,但是如果您无法获取资源,还有另一种获取 bundle 资源的方法。

您可以尝试通过以下方式获取 bundle

[NSBundle bundleForClass:[self class]]

这是我使核心数据单元测试工作的代码

NSBundle * bundle = [NSBundle bundleForClass:[self class]];
managedObjectModel_ = [NSManagedObjectModel mergedModelFromBundles:[NSArray arrayWithObject:bundle]];

注意:还请确保 .xcdatamodel 包含在您的单元测试目标中

关于iphone - 单元测试核心数据 - 异常退出,代码为 134,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3241175/

相关文章:

php - 每当单击按钮时触发 Web 服务时,数据都会在数据库中输入两次?

java - 从没有 SparkContext 的列表创建 JavaRDD

ios - 从 IOS 上安装的应用程序中删除旧的未使用的 .mom(d) 文件?

iOS - Swift - 应用程序启动时屏幕调整大小

ios - 快速修改通知配置

unit-testing - 如何使用 Visual Studio Code 中的 Mocha 调试用 Typescript 编写的单元测试

ios - 核心数据 : ObjectID Error: "No known class method for selector ' managedObjectContext'

ios - 使用 Swift CoreData 进行动态过滤

iphone - 使用 touchesBegin/Moved/Ended 只影响单个 uiimageview 在屏幕上的移动,尽管有多点触摸

javascript - 如何测试对具有不同参数的同一函数的多次调用?