xcode 4.0으로 넘어 가면서.. 이래저래 익숙하지 않아서 난감한게 많네요.
코드를 작성하다가.. unittest를 하려고 하다 보니.. 4.0에서는 또 다른 일이네요 -_-;;
적용하다가.. 알게된 gh-unit이라는 라이브러리가 있어서.. 4.0용에서 사용 하는 과정을 정리해 봤습니다.
이게 ui도 잘 되어 있고, 훨씬 좋더라구요 ^^;
시작 하시기 전에 기존 프로젝를 띄우시거나, 빈 프로젝트를 띄어 줍니다.
File > New > New Target... 으로 타겟을 추가해 줍니다.
Application > Window-based Application 을 선택해 줍니다.
여기선 tests라는 이름으로 타겟을 작성했습니다.
Unit Tests는 다른걸로 할꺼니까.. 꺼줬습니다.
Tests의 Build Phases에서 Link Binary With Libraries에 보시면, 이렇게 4개가 추가되어 있으면 정상적으로 추가 된겁니다.
https://github.com/gabriel/gh-unit/downloads
이 주소로 가셔서 최신의
여기서 사용한건 GHUnitIOS-0.4.27.zip 이 파일 입니다.
(0.4.28도 있는데.. 이건 오류가 나서 실행이 안 됩니다.. ^^;;)
다운로드 받은 파일의 압축을 푸시고, 프로젝트 폴더에 복사해서 넣습니다. (프로젝트를 끌어 오는 과정에 copy로 해서 옮겨 오셔도 상관은 없습니다.)
복사한 폴더를 UnitTest를 할 타겟(여기서는 Tests)에 드레그 해서 추가해 줍니다.
추가 할때 Add to targets에 Tests만 키고.. 원래 있던 프로젝트의 체크 박스는 꺼 줍니다.
혹시 다른 폴더에 있는 프레임워크를 추가하신 분은 "Tests"의 Build Settings에서 'Framework Search Paths'에 해당 폴더를 추가해 주세요.
그리고 "Tests" Build Settings에서 'Other Linker Flags'에
혹시, 위 설정이 안 보이시는 분들은 중간에 보시면, Basic이라고 되어 있는 거 옆에 All이라는 버튼이 있습니다. 그걸 누르시면 보일 겁니다.
여기서는 Tests-Info.plist인데.. 여기서 Main nib file base name에
이걸 지워 주지 않고 실행 하면, 흰색 빈 화면만 나오게 됩니다.
Tests의 밑에 보시면 main.m이라는 파일이 있습니다.
이 파일의 내용을 모두 지우고, 아래와 내용을 붙여 넣기 합니다.
원본은 좀 긴데.. 블로그에 쓰기 길어서 주석을 좀 제외 했습니다.
원본 : https://github.com/gabriel/gh-unit/blob/master/Project-IPhone/GHUnitIOSTestMain.m
main.m이 2개 있어서 찝찝하신 분은 main.m을 지우고, 원본 파일을 사용하셔도 괜찮습니다.
다만 그 다른 이름의 파일이 컴파일될 파일 목록에 있는지만 체크 하세요.
그리고 2번째 줄에서 #import <GHUnitIOS/GHUnit.h> 에서 IOS를 빼 주고 넣어 주시면 됩니다.
그리고 테스트 할 파일을 추가해 줍니다.
파일을 새로 만드시고, h와 m 파일에 아래와 같이 넣어 줍니다.
ExampleTest.h
ExampleTest.m
여기서 Tests | iPhone 4.2 Simulator 를 선택하고 run 버튼을 누릅니다.
그러면, 아래와 같이 Unit Test가 실행이 됩니다.
run을 눌러서.. 제작한 함수가 정상적으로 잘 동작하는지 확인해 보시면 됩니다.
출처 : http://gyuha.tistory.com/415
코드를 작성하다가.. unittest를 하려고 하다 보니.. 4.0에서는 또 다른 일이네요 -_-;;
적용하다가.. 알게된 gh-unit이라는 라이브러리가 있어서.. 4.0용에서 사용 하는 과정을 정리해 봤습니다.
이게 ui도 잘 되어 있고, 훨씬 좋더라구요 ^^;
시작 하시기 전에 기존 프로젝를 띄우시거나, 빈 프로젝트를 띄어 줍니다.
1. target 추가 하기.
File > New > New Target... 으로 타겟을 추가해 줍니다.
Tests의 Build Phases에서 Link Binary With Libraries에 보시면, 이렇게 4개가 추가되어 있으면 정상적으로 추가 된겁니다.
2. 프레임워크 추가하기
https://github.com/gabriel/gh-unit/downloads
이 주소로 가셔서 최신의
여기서 사용한건 GHUnitIOS-0.4.27.zip 이 파일 입니다.
(0.4.28도 있는데.. 이건 오류가 나서 실행이 안 됩니다.. ^^;;)
다운로드 받은 파일의 압축을 푸시고, 프로젝트 폴더에 복사해서 넣습니다. (프로젝트를 끌어 오는 과정에 copy로 해서 옮겨 오셔도 상관은 없습니다.)
복사한 폴더를 UnitTest를 할 타겟(여기서는 Tests)에 드레그 해서 추가해 줍니다.
혹시 다른 폴더에 있는 프레임워크를 추가하신 분은 "Tests"의 Build Settings에서 'Framework Search Paths'에 해당 폴더를 추가해 주세요.
그리고 "Tests" Build Settings에서 'Other Linker Flags'에
-ObjC
-all_load
혹시, 위 설정이 안 보이시는 분들은 중간에 보시면, Basic이라고 되어 있는 거 옆에 All이라는 버튼이 있습니다. 그걸 누르시면 보일 겁니다.
3. info.plist 변경하기.
각 프로젝트 마다.. 프로젝트-Info.plist 파일이 있을 겁니다.여기서는 Tests-Info.plist인데.. 여기서 Main nib file base name에
MainWindow라고 있을 겁니다.
이 필드를 지워 줍니다.
4.Unit Test 코드 넣기.
Tests의 밑에 보시면 main.m이라는 파일이 있습니다.
이 파일의 내용을 모두 지우고, 아래와 내용을 붙여 넣기 합니다.
원본은 좀 긴데.. 블로그에 쓰기 길어서 주석을 좀 제외 했습니다.
원본 : https://github.com/gabriel/gh-unit/blob/master/Project-IPhone/GHUnitIOSTestMain.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #import <UIKit/UIKit.h> #import <GHUnit/GHUnit.h> void exceptionHandler(NSException *exception) { NSLog(@ "%@\n%@" , [exception reason], GHUStackTraceFromException(exception)); } int main( int argc, char *argv[]) { NSSetUncaughtExceptionHandler(&exceptionHandler); NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; int retVal = 0; if ( getenv ( "GHUNIT_CLI" )) { retVal = [GHTestRunner run]; } else { retVal = UIApplicationMain(argc, argv, nil, @ "GHUnitIPhoneAppDelegate" ); } [pool release]; return retVal; } |
다만 그 다른 이름의 파일이 컴파일될 파일 목록에 있는지만 체크 하세요.
그리고 2번째 줄에서 #import <GHUnitIOS/GHUnit.h> 에서 IOS를 빼 주고 넣어 주시면 됩니다.
그리고 테스트 할 파일을 추가해 줍니다.
파일을 새로 만드시고, h와 m 파일에 아래와 같이 넣어 줍니다.
ExampleTest.h
1
2
3
4
5
| #import <Foundation/Foundation.h> #import <GHUnit/GHUnit.h> @interface ExampleTest : GHTestCase {} @end |
ExampleTest.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| #import "ExampleTest.h" @implementation ExampleTest - ( BOOL )shouldRunOnMainThread { // By default NO, // but if you have a UI test or test dependent on running on the main thread return YES return NO; } - ( void )setUpClass { // Run at start of all tests in the class } - ( void )tearDownClass { // Run at end of all tests in the class } - ( void )setUp { // Run before each test method } - ( void )tearDown { // Run after each test method } - ( void )testFoo { NSString *a = @ "foo" ; GHTestLog(@ "I can log to the GHUnit test console: %@" , a); // Assert a is not NULL, with no custom error description GHAssertNotNULL(a, nil); // Assert equal objects, add custom error description NSString *b = @ "bar" ; GHAssertEqualObjects(a, b, @ "A custom error message. a should be equal to: %@." , b); } - ( void )testBar { // Another test } @end |
3.Unit Test 실행해 보기
여기까지 잘 마치셨다면, xcode 4.0의 상단에 보시면, run, stop 옆에 선택상자가 있을 겁니다. 여기서 Tests | iPhone 4.2 Simulator 를 선택하고 run 버튼을 누릅니다.
그러면, 아래와 같이 Unit Test가 실행이 됩니다.
run을 눌러서.. 제작한 함수가 정상적으로 잘 동작하는지 확인해 보시면 됩니다.
출처 : http://gyuha.tistory.com/415
'프로그래밍 > iOS' 카테고리의 다른 글
달력 라이브러리 Tapku 사용법 (0) | 2012.02.01 |
---|---|
아이폰 Calendar Library (0) | 2012.02.01 |
MapView에 특별한 Annotation 붙이기 (0) | 2012.01.16 |
MapView (0) | 2012.01.16 |
위치정보를 이용하는 어플 예제 (0) | 2012.01.16 |