[英]Trouble with OCUnit - Instantiating custom data type
我已經使用iPhone SDK版本3.1.2為XCode版本3.2.2項目成功設置了單元測試。
我創建了一個類“ Callout”,試圖在單元測試的上下文中實例化該類。 該類有一個方法,
-(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");
}
謝謝!
-馬特
PS-我發現與OCUnit有關的大多數線程通常都包含一些據說更好的單元測試框架的建議。 我知道他們在那里,但除非您有與GHUnit或Mac版Google工具箱不同的其他用途,否則我並不真正感興趣。
我不能肯定地說,但我懷疑問題出在OCUnit。 基於當您為字典參數傳遞nil時錯誤消失的事實,我猜是有問題的消息在類內某個地方發送到該字典引用。 當字典引用為nil時,它僅吸收消息。
順便說一句,如果您正在尋找不同於OCUnit / GHUnit / GTM的測試框架,建議您使用Cedar ; 它是BDD風格的測試框架,例如Rspec或Jasmine。 但是,如上所述,我懷疑測試框架是您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.