iphoneアプリのUnitTestを行うためにGHUnitを使用してテストを行おうとしたら、
TestCaseを書いてあるのに一向にテストを認識してくれなくてハマったので書いておきます。
TargetTest.m
#import <GHUnitIOS/GHUnit.h>
#import "Target.h"
@interface TargetTest : GHTestCase {}
@property (nonatomic,strong) Target* t;
@end
@implementation UsersTest{
}
-(void)setUpClass{
self.t = [[Target alloc] init];
}
-(void)dataSetTest{
NSString* data1 = @"data1";
NSString* data2 = @"data2";
[self.t setdataWithDataOne:data1 DataTwo:data2];
GHAssertEquals(self.t.data1,data1,@"set data1 equals");
GHAssertEquals(self.t.data2,data2,@"set data2 equals");
}
@end
例えばTargetというクラスがあってそれをテストしようとした時に、私は最初こう書いていました。
すると、ビルド・実行はできるのですがリスト中にdataSetTestの項目がでてきません。
では、このテストケースクラスを修正してテストができるようにしたいと思います。
修正したソースは以下です。
TargetTest.m
#import <GHUnitIOS/GHUnit.h>
#import "Target.h"
@interface TargetTest : GHTestCase {}
@property (nonatomic,strong) Target* t;
@end
@implementation UsersTest{
}
-(void)setUpClass{
self.t = [[Target alloc] init];
}
-(void)testDataSet{
NSString* data1 = @"data1";
NSString* data2 = @"data2";
[self.t setdataWithDataOne:data1 DataTwo:data2];
GHAssertEquals(self.t.data1,data1,@"set data1 equals");
GHAssertEquals(self.t.data2,data2,@"set data2 equals");
}
@end
こうするとテストが表示されます。
なにが変わったかというと、"dataSetTest"というメソッド名を"testDataSet"というメソッド名に変えただけです。
どうもメソッド名の最初に"test"となっているものをテスト対象と認識するようです。