ios 개발에서 TDD를 수행하기 위해 최소한으로 유지
6107 단어 iOSSwiftTDDObjective-C아이폰
ios 개발에서는, 아무것도 생각하지 않고 쓰면 AppDelegate가 불려, Controller가 불려…
아는 사람에게는 당연한 해결 방법입니다만, 의외로 일본어 기사가 적었으므로, 후배를 위해서 쓰고 있습니다.
Main Interface를 코드로 작성
아래의 부분을 쓰고 있으면 테스트를 동작시키면 거기의 Controller가 움직이므로 지워 둡니다.
위의 대신 코드로 쓸 때.
AppDelegate.swift func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let window = UIWindow(frame: UIScreen.main.bounds)
self.window = window
let storyboard = UIStoryboard(name: "Main", bundle: nil)
window.rootViewController = storyboard.instantiateInitialViewController()
window.makeKeyAndVisible()
return true
}
main 함수 만들기
우선, 자신의 main 함수를 동작시키고 싶으므로, AppDelegate 클래스의 @UIApplicationMain
를 삭제해 둡니다.
-@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
그런 다음 다음 파일을 만듭니다.
main.swiftlet appDelegateClass: AnyClass? =
NSClassFromString("テストターゲット名.TestingAppDelegate") ?? AppDelegate.self
let args = UnsafeMutableRawPointer(CommandLine.unsafeArgv).bindMemory(to: UnsafeMutablePointer<Int8>.self, capacity: Int(CommandLine.argc))
UIApplicationMain(CommandLine.argc, args, nil, NSStringFromClass(appDelegateClass!))
Objective-C에서는 다음과 같습니다.
main.mint main(int argc, char *argv[]) {
@autoreleasepool {
Class appDelegateClass = NSClassFromString(@"TestingAppDelegate");
if (!appDelegateClass) {
appDelegateClass = [AppDelegate class];
}
return UIApplicationMain(argc, argv, nil, NSStringFromClass(appDelegateClass));
}
}
테스트용 AppDelegate 만들기
다음 파일을 테스트 대상에 넣습니다.
TestingAppDelegate.swiftclass TestingAppDelegate: NSObject {
var window: UIWindow?
}
Objective-C에서는 다음과 같습니다.
TestingAppDelegate.h@interface TestingAppDelegate : NSObject
@property(nonatomic, strong) UIWindow *window;
@end
TestingAppDelegate.m@implementation TestingAppDelegate
@end
이상입니다.
Reference
이 문제에 관하여(ios 개발에서 TDD를 수행하기 위해 최소한으로 유지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ko2ic/items/5979c97b4ac589b1c8a1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let window = UIWindow(frame: UIScreen.main.bounds)
self.window = window
let storyboard = UIStoryboard(name: "Main", bundle: nil)
window.rootViewController = storyboard.instantiateInitialViewController()
window.makeKeyAndVisible()
return true
}
우선, 자신의 main 함수를 동작시키고 싶으므로, AppDelegate 클래스의
@UIApplicationMain
를 삭제해 둡니다.-@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
그런 다음 다음 파일을 만듭니다.
main.swift
let appDelegateClass: AnyClass? =
NSClassFromString("テストターゲット名.TestingAppDelegate") ?? AppDelegate.self
let args = UnsafeMutableRawPointer(CommandLine.unsafeArgv).bindMemory(to: UnsafeMutablePointer<Int8>.self, capacity: Int(CommandLine.argc))
UIApplicationMain(CommandLine.argc, args, nil, NSStringFromClass(appDelegateClass!))
Objective-C에서는 다음과 같습니다.
main.m
int main(int argc, char *argv[]) {
@autoreleasepool {
Class appDelegateClass = NSClassFromString(@"TestingAppDelegate");
if (!appDelegateClass) {
appDelegateClass = [AppDelegate class];
}
return UIApplicationMain(argc, argv, nil, NSStringFromClass(appDelegateClass));
}
}
테스트용 AppDelegate 만들기
다음 파일을 테스트 대상에 넣습니다.
TestingAppDelegate.swiftclass TestingAppDelegate: NSObject {
var window: UIWindow?
}
Objective-C에서는 다음과 같습니다.
TestingAppDelegate.h@interface TestingAppDelegate : NSObject
@property(nonatomic, strong) UIWindow *window;
@end
TestingAppDelegate.m@implementation TestingAppDelegate
@end
이상입니다.
Reference
이 문제에 관하여(ios 개발에서 TDD를 수행하기 위해 최소한으로 유지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ko2ic/items/5979c97b4ac589b1c8a1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class TestingAppDelegate: NSObject {
var window: UIWindow?
}
@interface TestingAppDelegate : NSObject
@property(nonatomic, strong) UIWindow *window;
@end
@implementation TestingAppDelegate
@end
Reference
이 문제에 관하여(ios 개발에서 TDD를 수행하기 위해 최소한으로 유지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ko2ic/items/5979c97b4ac589b1c8a1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)