簡體   English   中英

OCUnit遇到麻煩-實例化自定義數據類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM