2015-06-23 20 views
6

Mam dwa cele app i appTests. Mam również klasę Wine i framework Realm i "RealmSwift", które są powiązane z tymi dwoma celami. Nie ma wyjątków Kiedy używam klasy Wine w tragecie app.Klasa jest połączona więcej niż jeden raz w celu

Ale gdy chcę uruchomić testu jak

appTests.swift (22 linii)

import UIKit 
import XCTest 
import RealmSwift 

class appTests: XCTestCase { 
func testRealmAdd() { 
     NSFileManager.defaultManager().removeItemAtPath(Realm.defaultPath, error: nil) 
     let realm = Realm() 
     let wine = Wine() // when error occure 
     wine.photo = "photo" 
     wine.desc = "description" 
     wine.raiting = 3.0 

     realm.write {() -> Void in 
      realm.add(wine) 
     } 

     let result = realm.objects(Wine) 
     print("\(result)") 
     XCTAssertTrue(result.count == 1, "There should be one element") 
    } 
} 

Wine.swift (10 linii)

import UIKit 
import RealmSwift 

class Wine: Object { 

    dynamic var desc: String = "" 
    dynamic var photo: String = "" 
    dynamic var raiting: Double = 0 

} 

Wtedy wyjątek pojawia się w linii 8 w appTests.swift

Podklas RLMObject o tej samej nazwie nie może być dwa razy zawarty w tym samym celu. Upewnij się, że "wino" jest połączone tylko raz z bieżącym celem.

Już wyczyściłem DerivedData i projekt. Czy możesz zasugerować, gdzie powinienem wyglądać?

EDIT po nhgrif komentarzu

Ok wydaje się, że wyjątek wzrasta wcześniej, w linii 7. Która jest teraz oznaczone w kodzie dzięki nhgrif.

+0

Która linia to linia 8? Prawdopodobnie nie ma to nic wspólnego z kodem źródłowym, ale zamiast tego, w jaki sposób łączysz frameworki z projektami. – nhgrif

+0

@nhgrif Dodałem te struktury, takie jak tutorial, powiedział: https://realm.io/docs/swift/latest/#getting-started, a następnie zaznaczyłem 'Realm.framework',' RealmSwift.framework' oraz 'Wine.swift' jako sprawdzone dla celu 'appTests' w ** Docelowe członkostwo ** –

Odpowiedz

1

Wine.swift powinien być tylko w app, a nie appTests. Obejmuje to oba wyniki: appTests z dwiema klasami o nazwach Wine (app.Wine i appTests.Wine), co nie jest czymś, co obsługuje Realm. Tak długo, jak Wine jest (lub Swift 2.0, @Testable), można uzyskać do niego dostęp z appTests bez uwzględniania go w docelowym appTests, ponieważ appTests łączy w app.

+0

Muszę również upublicznić wszystkie funkcje i własności, które będą używane w teście. Co więcej muszę dodać 'import app '. Nie mogę się doczekać Swift 2.0 :) –

Powiązane problemy