내 응용 프로그램에는 싱글 톤 클래스가 있습니다. 다음과 같이 구현 :객관적인 싱글 톤 - 단위 테스트를 실행할 때 재설정되지 않음
이 클래스의 헤더 파일은 codedatamanager 같은 단일 속성의 모든 종류가@implementation PTKRGlobal
static PTKRGlobal *instance = nil;
+(PTKRGlobal *)shared
{
@synchronized(self)
{
if(instance==nil)
{
instance= [PTKRGlobal new];
}
}
return instance;
}
:
[[PTKRGlobal shared] coreDataManager]
이 나를 사용하여 관리자를 호출 할 수 있습니다
@interface PTKRGlobal : NSObject
+(PTKRGlobal *)shared;
@property (strong, nonatomic) PTKRCoraDataManager *coreDataManger;
을 appdeleget에서 관리자를 설정했습니다.
[[PTKRGlobal shared] setCoreDataManger:[PTKRCoraDataManager new]];
유닛 테스트를 실행할 때 일부 차이점이있는 서브 클래 싱 된 PTKRCoreDataManager가 있습니다. 그러나 단위 테스트에서 코어 데이터 관리자를 설정하려고 시도하면 [[PTKRGlobal shared] setCoreDataManger:[PTKRTestCoreDataManager new]];
변수가 이미 설정되어 있고 재 할당 할 수 없습니다. 추정치 PTKRGlobal은 유닛 테스트가 실행되기 전에 실행되는 기능 테스트가 실행되는 동안 생성됩니다. 나는 앱 위임에 중단 점을 넣고 단위 테스트 setUp과 출력을 비교하여 확인했습니다. po [[PTKRGlobal shared] coreDataManager]
unittest를 시작하기 전에이 싱글 톤을 어떻게 재설정 할 수 있습니까?
+ (void)destroySingleton {
instance = nil;
}
를 그리고 단위 테스트의 tearDown
방법에 전화 :
추출 :
그런 다음 단위 테스트의@implementation
위의 단위 테스트에 대한.m
에 다음을 추가합니다. 유닛 테스트 싱글 톤이 아니라면 삶이 훨씬 쉬워 질 것입니다! :-) – Jocke