我已成功爲iPhone SDK版本3.1.2設置XCode版本3.2.2項目的單元測試。OCUnit故障 - 實例化自定義數據類型
我創建了一個類「標註」,我試圖在單元測試的上下文中實例化。該類有一個方法,
-(id) initWithDictionary:(NSDictionary*)calloutDict includesSong:(BOOL)hasSong lastUpdate:(NSDate*)lastUpdate;
我正在調用單元測試。當我這樣做時,我收到錯誤「無法識別的實例發送到選擇器」。這對我沒有任何意義,所以出於好奇,我把所有的東西都放在一起,然後像字典參數那樣傳遞'nil',然後它建立並運行(當然,測試失敗了,但它仍然運行)。
有沒有人有任何線索這裏發生了什麼?我認爲在OCUnit中使用自定義數據類型沒有什麼問題,因爲我在單元測試的其他地方成功完成了它。
這裏是有問題的代碼,順便說一句:
- (void)testCalloutNormal
{
NSDictionary *params = [[NSDictionary alloc] initWithObjects:[NSMutableArray arrayWithObjects:@"sent",
[NSNumber numberWithInt:100],
[NSNumber numberWithInt:50],
@"challengerUsername",
@"challengedUsername",
[NSDate date],
nil]
forKeys:[NSMutableArray arrayWithObjects:@"type",
@"challengerScore",
@"challengedScore",
@"challenger",
@"challenged",
@"dateAccepted",
nil]];
Callout *callout;
callout = [[Callout alloc] initWithDictionary:params includesSong:NO lastUpdate:[NSDate date]];
NSInteger ID = 1;
callout.calloutID = 1;
[params release];
STAssertEquals(CalloutOutcomeTypeWon, callout.outcome, @"Failure: challenger's score is higher than the challengee - should return CalloutOutcomeTypeWon");
}
謝謝!
-Matt
P.S. - 我發現的與OCUnit相關的大多數線程通常都包含了一些更好的單元測試框架的建議。我知道他們在那裏,但我沒有真正感興趣,除非你有什麼不同於GHUnit或Mac的Google工具箱。