LoginSignup
2
2

More than 5 years have passed since last update.

GHUnitでGHUnitCase継承したTestCaseを作成したのに動かなかった時にしたこと

Last updated at Posted at 2014-03-02

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"となっているものをテスト対象と認識するようです。

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2