Xcode 7魔法记录单元测试失败

时间:2015-10-05 15:17:08

标签: ios objective-c core-data magicalrecord

从Xcode 6.4升级到Xcode 7(现在是7.0.1)后,我的项目在启动单元测试时崩溃了。我的iOS项目正在使用魔法记录,应用程序在此断言崩溃:

    + (NSManagedObjectContext *) MR_defaultContext
{
    @synchronized(self) {
        NSAssert(MagicalRecordDefaultContext != nil, @"Default context is nil! Did you forget to initialize the Core Data Stack?");
        return MagicalRecordDefaultContext;
    }
}

我已经注释掉了我以前的所有测试,这两个测试都显示了相同的行为:

#import <XCTest/XCTest.h>

@interface BadTests : XCTestCase

@end

@implementation BadTests

- (void)setUp {
    [super setUp];
}

- (void)tearDown {
    [super tearDown];
}

- (void)testSanity {
    XCTAssert(1 == 1);
}

@end

#import <XCTest/XCTest.h>
#import <MagicalRecord/MagicalRecord.h>

@interface BadTests : XCTestCase

@end

@implementation BadTests

- (void)setUp {
    [super setUp];
    NSLog(@"*** USING IN MEMORY STORE ***");
    [MagicalRecord setLoggingLevel:MagicalRecordLoggingLevelDebug];
    [MagicalRecord setupCoreDataStackWithInMemoryStore];
}

- (void)tearDown {
    [MagicalRecord cleanUp];
    [super tearDown];
}

- (void)testSanity {
    XCTAssert(1 == 1);
}

@end

使用相同的测试恢复到Xcode 6可以解决问题。

2 个答案:

答案 0 :(得分:1)

通过调整我的Podfile结束解决问题:

link_with 'TestApp', 'TestAppTests', 'TestAppUITests'

platform :iOS, '8.1'

target 'TestApp' do
     pod 'MagicalRecord'
end

target 'TestApp' do
     pod 'OHHTTPStubs'
end

以前我的pod文件看起来像这样:

platform :iOS, '8.1'
pod 'MagicalRecord'
pod 'OHHTTPStubs'

答案 1 :(得分:0)

这种情况可能源于发行说明中提到的旧运行时环境的存在:

  

如果较旧的iOS模拟器运行时,Xcode进程可能会意外退出   (Xcode 6.x)出现在磁盘上

要检查这是否是原因,您可以从/ Library / Developer / CoreSimulator / Profiles / Runtimes中删除所有旧的运行时库