0

以下のメソッドでAppleのデフォルトのSenTestingKitを使用して単体テストを作成したいと思います。

- (NSDictionary*)getValueTags {
    return _tags;
}

- (NSString*)getFlag {
    NSString* jo = @"";
    for (NSString* key in _tags) {
        jo = [jo stringByAppendingFormat:@"%@=\"%@\"&", key, [_tags objectForKey:key]];
    }
    if ([jo length] > 0) {
        jo = [jo substringToIndex:[jo length] - 1];
    }
    return jo;
}

デフォルトのSenTestingを使用しました

    - (void)setUp
    {
        [super setUp];

        // Set-up code here.
    }

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

        [super tearDown];
    }

-(void)testValueTags{

}

-(void)testGetFlag{

}

TestCaseを作成するのは初めてですが、テストケースを作成するためのサンプルメソッドのガイドラインが必要です。

4

1 に答える 1

2

テストケースには、次の4つの異なるフェーズがあります。

  1. 設定
  2. エクササイズ
  3. 確認
  4. 取り壊す

これらのフェーズの一部は空にすることができます。たとえば、ARCを使用すると、ほとんどの破棄が自動的に行われます。

setUp開始するときは、またはtearDownメソッドに何も入れないでください。単一の単体テストを作成するだけです。これが実際の例です。(Objective-Cのイディオムでは「get」という単語を使用しないため、名前を変更します。したがって、getFlag単に名前を付けるのではなく、名前を変更しますflag。)クラスを「Example」と呼び、使用します。アーク。そして、私は「テスト対象システム」の略語「sut」を使用します。

- (void)testFlagGivenOneEntry
{
    // set up
    Example *sut = [[Example alloc] init];
    [sut setTags:@{ @"key1" : @"value1" }];

    // execute & verify
    STAssertEqualObjects([sut flag], @"key1=\"value1\"", nil);
}

それは1つのテストです。もう1つ追加しましょう。

- (void)testFlagGivenTwoEntries
{
    // set up
    Example *sut = [[Example alloc] init];
    [sut setTags:@{ @"key1" : @"value1",
                    @"key2" : @"value2" }];

    // execute & verify
    STAssertEqualObjects([sut flag], @"key1=\"value1\"&key2=\"value2\"", nil);
}

この時点で、重複したコードがあります:sutの作成。これで、変数をクラスのインスタンス変数に昇格させることができます。次に、それを作成し、setUpで破棄しtearDownます:

@interface ExampleTest : SenTestCase
@end

@implementation ExampleTest
{
    Example *sut;
}

- (void)setUp
{
    [super setUp];
    sut = [[Example alloc] init];
}

- (void)tearDown
{
    sut = nil;
    [super tearDown];
}

- (void)testFlagGivenOneEntry
{
    [sut setTags:@{ @"key1" : @"value1" }];
    STAssertEqualObjects([sut flag], @"key1=\"value1\"", nil);
}

- (void)testFlagGivenTwoEntries
{
    [sut setTags:@{ @"key1" : @"value1",
                    @"key2" : @"value2" }];
    STAssertEqualObjects([sut flag], @"key1=\"value1\"&key2=\"value2\"", nil);
}

@end

より複雑な例については、Objective-C TDD:はじめにを参照してください。

于 2013-01-19T07:47:10.597 に答える