2011-06-15 80 views
1

我有一個符合UIKeyInput協議的UITextView的子類。所以我寫了一些邏輯測試。 我沒有錯誤,和所有其他的測試運行良好,但是當myTextView對象應該創建:測試用例在[[MyObject alloc] init]失敗

MyTextView *myTextView = [[MyTextView alloc] initWithFrame:frame]; 

停止測試,(像一個破發點)它不會繼續

我不知道爲什麼這是?也許MyTextView的對象不能在邏輯測試中創建?我需要在這裏進行應用程序測試嗎?如果是這樣,那麼規則是什麼?

ADDED

這是一個測試:(我有一對夫婦以上,但他們都止步於第一行)

- (void)testHasText{ 
    MyTextView *myTextView = [[MyTextView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; 
    [myTextView setText:@"some text"]; 
    STAssertTrue([myTextView hasText], @"hasText failed: It has text!"); 
    [myTextView setText:@""]; 
    STAssertFalse([myTextView hasText], @"hasText failed: It it empty!"); 
    [myTextView release]; 

} 

這是MyTextView實現:

- (BOOL)hasText{ 
    return [[self text] length]>0?YES:NO; 
} 

我已經評論了MyTextView中的其他方法,只留下了三個與UIKeyInput相關的方法。

此外,我還將MyTextView.m添加到LogicTests目標中的編譯源列表中。這可能是配置問題,即使我沒有得到任何鏈接器錯誤或警告?

+1

我想我們需要更多的細節來幫助你。將代碼發佈到您的子類的initWithFrame方法以及測試用例代碼將是一個開始。 – 2011-06-15 07:07:38

+0

UITextView可能是一個類集羣,在這種情況下,子類化不起作用。 – EmilioPelaez 2011-06-15 07:28:58

+0

@Emilio你是什麼意思的類集羣? – nacho4d 2011-06-15 07:30:35

回答

1

邏輯測試,只有在測試運行束是不能使用的UI元素。您需要爲此創建一個應用程序測試。

我可以推薦大猩猩邏輯公司的FoneMoneky來執行UI相關測試。它將使您能夠在單元測試中測試實際的用戶界面。

+0

那麼,所有的UIKit子類都必須在應用程序測試中進行測試? – nacho4d 2011-06-15 08:48:45

+0

@ nacho4d一般來說,是的。我認爲有一些例外,但現在不記得確切的是哪些。然而,FoneMonkey可以讓你做出不露面的UI測試,所以它的部分應用測試部分是核心單元測試。 – 2011-06-15 08:51:49

0

你有一個參考wmTextView,似乎並不存在。那將是我要檢查的第一件事。

第二是過去的這個問題:UIKit and unit testing

+0

參考只是一個錯字。 :) – nacho4d 2011-06-15 08:28:06