我想使用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{
}
我是编写TestCases的新手,我需要一些示例方法的指南来编写测试用例
答案 0 :(得分:2)
测试用例有四个不同的阶段:
其中一些阶段可能是空的。例如,如果您使用ARC,则大多数拆除会自动发生。
当你开始时,不要在setUp
或tearDown
方法中添加任何内容。只需编写一个单元测试。这是一个有效的例子。 (我要更改名称,因为Objective-C成语不是使用“get”这个词。所以不要使用getFlag
而是将其称为flag
。)我打算打电话类`示例,我将使用ARC。我使用缩写“sut”作为“被测系统”。
- (void)testFlagGivenOneEntry
{
// set up
Example *sut = [[Example alloc] init];
[sut setTags:@{ @"key1" : @"value1" }];
// execute & verify
STAssertEqualObjects([sut flag], @"key1=\"value1\"", nil);
}
这是一个测试。我们再添加一个。
- (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: How to Get Started。