Я реализовал простой Teamcity Adapter, вы можете просмотреть gist здесь . SenTestObserver точно не сломан, он просто не придерживается лучших практик:
Это то, что вам нужно вызвать в вашем подклассе Observer, чтобы правильно зарегистрировать его:
+(void)initialize
{
[[NSUserDefaults standardUserDefaults] setValue:@"TeamCityAdapter" forKey:@"SenTestObserverClass"];
// we need to force SenTestObserver to register us as a handler
// SenTestObserver is properly guarding against this invocation so nothing bad will hapen
// but this is required (bad design on SenTestObserver's side)...
[super initialize];
}
потому что инициализация SenTestObserver выглядит следующим образом:
+ (void) initialize
{
if ([self class] == [SenTestObserver class]) {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *registeredDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
@"SenTestLog" , @"SenTestObserverClass",
nil];
[defaults registerDefaults:registeredDefaults];
[NSClassFromString ([defaults objectForKey:@"SenTestObserverClass"]) class]; // make sure default observer is loaded
}
if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"SenTestObserverClass"] isEqualToString:NSStringFromClass(self)]) {
[self setCurrentObserver:self];
}
}
Я надеюсь, что это поможет другим в поиске адаптера teamcity для OCUnit / SenTestingKit.