2014-10-03 27 views
5

我有一個簡單的領域對象是這樣的:的iOS的測試與realm.io不起作用

@interface Person : RLMObject 
@property NSString *name; 
@end 

RLM_ARRAY_TYPE(Person) 
  • 我已經啓用了「目標會員」爲我的測試項目

現在我想用realm.io這樣測試一下:

#import <XCTest/XCTest.h> 
#import "Person.h" 

@interface PersonTests : XCTestCase 
@end 

@implementation PersonTests 

- (void)setUp {[super setUp];} 
- (void)tearDown {[super tearDown];} 
- (void)testFooBar 
{ 
    // !!! the test crashes right here!!!! 
    Person *person = [[Person alloc] init]; 


    person.name = @"foobar"; 

    RLMRealm *realm = [RLMRealm defaultRealm]; 

    [realm beginWriteTransaction]; 
    [realm addObject:person]; 
    [realm commitWriteTransaction]; 

    ...... 
} 

......但測試在第一行崩潰(Person * pers上= [[人的alloc] INIT])與以下錯誤

***終止應用程序由於未捕獲的異常 'RLMException',原因:

是 '的objectClass必須從RLMObject派生'任何人都知道我在做什麼錯了?我很感激任何提示!

+0

嘿馬可,你能分享一些你的代碼嗎?我只是試過這個,它工作得很好https://dl.dropboxusercontent.com/u/10116/Screen%20Shot%202014-10-03%20at%2010.57.58%20AM.png – yoshyosh 2014-10-03 17:58:37

+0

你好yoshyosh謝謝你的快速回復。在我的正常項目目標中,一切正常,但不在測試目標(單元測試)中。因此,如果您嘗試將代碼複製到XCTestCase中,它是否也可以工作? – 2014-10-03 18:17:21

+1

是的,一切都通過我https://www.dropbox.com/s/a31qjgdqx1jjxot/Screen%20Shot%202014-10-03%20at%202.29.08%20PM.png?dl=0 你可以分享你的代碼? – yoshyosh 2014-10-03 21:31:11

回答

2

我有同樣的錯誤,和4小時刪除,克隆後,乾淨,重新安裝吊艙,重複...什麼工作對我來說是:

Podfile

link_with 'MyProject', 'MyProjectTests' 

#common pods such as CocoaLumberjack 

pod 'Realm', '0.89.0' 

target 'MyProjectTests', exclusive: true do 
    pod 'Realm/Headers' 
end 

TESTFILE

#import <UIKit/UIKit.h> 
#import <XCTest/XCTest.h> 
#import <Realm/Realm.h> 
#import "RealmObjectSubclass.h" 

- (void)setUp { 
    [super setUp]; 
    NSString *resourcePath = [NSBundle bundleForClass:[self.class]].resourcePath; 
    NSString *testRealPath = [NSString stringWithFormat:@"%@.test", resourcePath]; 
    [RLMRealm setDefaultRealmPath:testRealPath]; 
} 
+0

_pod'Realm/Headers'_方法適用於我。 – zim 2015-04-12 00:51:11