2014-02-22 111 views
2

我構建了一組XCTestCase方法來對我的核心數據模型執行代碼。我打算從其他測試方法中調用一些測試方法,以便我可以看到不同的數據組合,同時保持代碼最小。我無法想象爲什麼這不起作用,但我想知道世界在想什麼,以及這是否被認爲是好的做法。確定可以在XCTest的其他測試用例中調用測試用例

下面是它會是什麼樣子:

@interface sessionTests : XCTestCase 
@property (strong) Model *model; 
@end 
- (void)setUp 
{ 
    [super setUp];  
    _model = [[Model alloc]init]; 
} 

- (void) testValue1 
{ 
    _model.value = 1; 
    XCTAssertTrue(_model.value == 1, @"model.value is not 1"); 
} 

- (void) testValue2 
{ 
    _model.value = 2; 
    XCTAssertTrue(_model.value == 2, @"model.value is not 2"); 
} 

- (void) testStringHello 
{ 
    _model.str = @"Hello"; 
    XCTAssertTrue([_model.str isEqualToString:@"Hello"], @"model.str is not Hello"); 
} 

- (void) testHello1 
{ 
    [self testValue1]; 
    [self testStringHello]; 
} 

- (void) testHello2 
{ 
    [self testValue2]; 
    [self testStringHello]; 
} 

回答

3

它不是好的做法對測試,以互相依賴。他們應該能夠自行執行。

問題是,如果測試依賴於對方,可能很難確定哪裏出了問題。

所以,單元測試應該是自包含的,儘可能容易理解。實際上,我們通常會放棄一些我們通常會遵守的做法,例如使用代碼重複,以實現這種自包含,易於理解的目標。看看這個DAMP vs DRY tests answer

+0

謝謝賈斯珀,偉大的視角。 –

+0

自2013年以來,Xcode已經能夠運行單個測試。而且,單個測試仍應作爲一個單元運行,但可以在其他測試中用作常規方法。這實際上應該有助於查明失敗的原因。 –

+0

有趣的觀點。當我開始TDD(使用鬆散的定義)時,我被教導測試不應該依賴於其他測試。到現在爲止還沒有重新討論過這個問題,但是這裏有一個很好的反觀點:​​http://stackoverflow.com/a/1781858/404201 –