코어 데이터를 사용하는 iOS 앱과 함께 지속성을 관리하는 우수 Magical Record이 있습니다. 여기 내 문제가 있습니다 :Core Data 및 Magical Record로 iOS 응용 프로그램 단위 테스트
우리의 기존 단위 테스트 구조는 표준 iOS 응용 프로그램 테스트를 사용합니다. 각 테스트마다 깨끗한 메모리 내 db로 단위 테스트를 실행하고 싶습니다. 나는 this article에있는 지침을 따라 마법 레코드를 사용하여이를 설정했다. 이 문제는 응용 프로그램 테스트 실행의 구현에서 나타납니다. 응용 프로그램 테스트는 응용 프로그램 번들을 먼저 실행 한 다음 단위 테스트 번들을 실행하므로 내 메모리 저장소 호출이 실행되기 전에 핵심 데이터 스택을 설정하기위한 정상적인 호출이 호출되고 있습니다.
나는 밤새도록이 문제를 인터넷 검색, 유망한 기사의 몇 가지 발견 :- http://blog.goosoftware.co.uk//2013/02/07/unit-testing-a-coredata-manager-class/
- How to use Core Data for Dependency Injection
이들의 문제는 그들이 싱글 데이터 액세스 개체를 사용하고 있는지입니다 핵심 데이터 호출에 대한 게이트웨이로 내 응용 프로그램이 이런 식으로 설정되어 있지 않습니다. 내 데이터 가져 오기 및 저장을 위해 Magical Record에 전화를 사용하고 있습니다.
누구에게이 문제가 발생 했습니까? 그렇다면 테스트가 실행 중일 때 메모리 내 저장소로 데이터 설정을 바꿀 수있는 세부 사항이 누락 되었습니까?
편집 : 추가 코드
내 애플 대리자에서, 나는이있다 :
-(void)setUp{
[super setUp];
[MagicalRecord setDefaultModelFromClass:[self class]];
[MagicalRecord setupCoreDataStackWithInMemoryStore];
}
-(void)tearDown{
[MagicalRecord cleanUp];
[super tearDown];
}
: 핵심 데이터를 다루는 모든 단위 테스트 클래스에서
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[MagicalRecord setupAutoMigratingCoreDataStack];
// Other setup code
return YES;
}
을,이이
각 응용 프로그램 위임 코드와 setup/teardown이 각 테스트마다 호출되지만 테스에 대한 기본 코어 데이터 스택을 만드는 방법을 모르겠습니다. t는 메모리 저장소를 사용합니다. 또한 .xcdatamodel 파일을 단위 테스트 대상에 추가했습니다.
을 : 그냥은 다음과 같이해야하므로 현재 데이터 스택 정말 설정 메모리 저장소를 찢어
setUp
에서[MagicalRecord setupCoreDataStackWithInMemoryStore];
에 호출하기 전에전화 설정 범위를 좁힐 수 있습니까? 나는 당신이 한 가지를 놓치고 있다고 생각하지만, 당신이하는 일을 보면서 그것이 무엇인지 알지 못합니다. – casademora
@casademora - 내가하는 일을 설명하는 코드가 추가되었습니다. 나는 또한 CocoaPods를 사용하여 Magical Record를 가져 왔는데, 그게 문제와 관련이 있는지는 확실하지 않습니다. –
hrm, 응용 프로그램 테스트를 실행해야합니까? 이 경우 테스트 설정을 사용하지 않아야합니다. 논리 테스트를 사용하는 경우 블로그 게시물에 지정된 설정이 올바르게 작동합니다. 또한 응용 프로그램과 논리 테스트의 차이점이 있다는 것을 싫어합니다 :/ – casademora