2

私は Objective-C を初めて使用し、TestDrivenDevelopment からすぐに始めようとしています。少なくともテストに合格すると、本当に安心できるからです。

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

コードの重複を減らすために、たとえば、次のような素晴らしいことがあります。

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

これは、Java の TestClass にある各テストの前に呼び出されます。

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

私が探しているものに近づいたWebで見つけた唯一のものは、SOに関するこの回答でした。

残念ながら、説明されている方法を再現することはできません。最小限の実行可能な例および/または初心者のためのより詳細な説明は素晴らしいものであり、高く評価されます!

ところで、下手な英語でごめんなさい。語学はまだまだ勉強中。:-)

編集:

これは、機能しない最小限の例です。おそらく、誰かが何が悪いのか教えてくれるでしょう。boardXcodeは、テスト メソッドの本体内を認識できないようです。

#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], @"");
}
4

1 に答える 1

3

テスト ケース クラスのセットアップ メソッドとティアダウン メソッドを呼び出す必要がsetUpありtearDownます。これについては、Xcode 単体テスト ガイド: テスト ケース メソッドの記述 で説明されています。

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

于 2012-04-29T03:34:13.217 に答える