2012-04-29 5 views
2

私はObjective-Cの新人です。少なくともテストが合格すると、本当に保証されているので、TestDrivenDevelopmentをすぐに開始しようとしています。Objective-C Xcodeバンドルの各ユニットテストの前にsetup()とteardown()をどうやって実現するのですか?

これまで、私はJavaでいくつかのチュートリアルを作成しましたが、ここで私はTDDを少し理解しました。 Brett Schucherts Video-Tutorials RPNCのフル・コーディングを段階的に進めるところで、彼は実際に彼を見てそのことを学ぶ金鉱です。

は、あなたがこの素晴らしい事は、例えばそこにあるコードの重複を減らすために:あなたはJavaであなたのTestClassをを持っている各テストの前に呼び出され

@Before 
public void init() { 
    /* Stuff that which will be set up before the call of each test method/* 
} 

これはObjective-C + Xcodeで実現したいものです。 Xcode 4.3(最新版)を使用しており、TestFrameworkに組み込まれていることを使用していることを言及する必要があります。

私が探していたものに近いウェブに見つかった唯一のものは、this answer on SOでした。

残念ながら、記載されている方法を再現することはできません。最小限の実行可能な例や新人のためのより詳細な説明はすばらしいでしょうし、よく評価されるでしょう!

ところで、悪い英語のために申し訳ありません。それでも言語を学ぶ。 :-)

編集:

ここでは動作しない最小限の例です。おそらく誰かが間違っていることを教えてくれるかもしれません。 Xcodeは、テストメソッドの本体の内部にboardを認識することができないようです。

#import <SenTestingKit/SenTestingKit.h> 
@interface ABoardShould : SenTestCase 
@end 

#import "ABoardShould.h" 
@implementation ABoardShould 

- (void)setUp 
{ 
    [super setUp]; 

    int rowCount = 6; 
    int columnCount = 7; 
    Board *board = [[Board alloc] initWithShapeRowCount:rowCount andColumnCount:columnCount]; 
} 

- (void)tearDown 
{ 
    // Tear-down code here. 

    [super tearDown]; 
} 

- (void)testHaveItsShapeSetWhenInitialised { 
    STAssertEquals([board rowCount], rowCount, @""); 
    STAssertEquals([board columnCount], columnCount, @""); 
} 

- (void)testHaveTheDimensionsOfItsBoardMatchTheGivenShape {   
    NSMutableArray *expectedFields = [[NSMutableArray alloc] initWithCapacity:columnCount*rowCount]; 
    for(int i=0; i < (rowCount*columnCount); i++) [expectedFields addObject: [NSNumber numberWithInt: 0]]; 

    STAssertEquals([expectedFields count], [[board fields] count], @""); 
} 

答えて

3

テストケースクラスのセットアップとティアダウンの方法はsetUptearDown呼び出さなければなりません。これはXcode Unit Testing Guide: Writing Test Case Methodsに記載されています。

この例では、はsetUpメソッドのローカル変数です。インスタンス変数にする必要があります。

+0

リンクありがとうございます。上記の例を掲載しましたが、問題がどこにあるのかを説明する必要があります。なぜなら、私はまだそれを動作させることができなかったからです。 – Aufwind

+0

私は自分の答えを更新しました。 –

関連する問題