2016-11-18 18 views
0

XCTest에 익숙하지 않아 10 개의 테스트 케이스가 있고 각 테스트 케이스가 상호 의존적 인 애플리케이션 용 샘플 프로젝트가 있습니다. 내 응용 프로그램을 종료하고 다음 메소드를 호출하는 각 테스트 케이스 후 테스트 슈트, 나는 그것이 응용 프로그램을 종료하지 않으려는하지만 테스트 케이스 하나를 사전에XCTest의 각 테스트 케이스 종료 후 앱 종료가 중지됩니다.

감사를 마치고 같은 장소에서 계속하는

+0

내 문제는 실제로 안드로이드 장치와 아이폰의 앱이 있습니다. 예를 들어 안드로이드 장치에서 "안녕"메시지를 보내고, 확인하고 싶습니다. 아이폰과 바이스의 반대로 확인합니다. 예를 들어, 나는 두 개의 장치 사이를 토글해야하므로 초기 상태와 함수가 다른 방법으로 나누어 져야하는 앱이 필요합니다. – user3724559

답변

0

xcode UI 테스트에서 일련의 테스트 케이스가 알려지지 않았기 때문에 테스트 케이스를 실행하기 위해 앱을 한 번만 실행하는 것은 좋지 않습니다.

하지만 나쁘게 원한다면 여기 해결책이 있습니다. 신속한 2.2 및 2.3에서는 이러한 종류의 요구 사항에 대해

dispatch_once 

을 사용합니다. 테스트 케이스 클래스에서

, 난 당신이() 여기 dispatch_once를 사용할 필요가

XCUIApplication.launch() method in setUp() method. 

을 사용할 생각합니다. 이 dispatch_once를 XCUIApplication.launch()에 사용하면 응용 프로그램을 한 번만 시작합니다.

private static var launchAppOnce:() = { 
    let app = XCUIApplication() 
    app.launch() 
    //do some code if you needed after launch app before run test cases. 
}() 

struct Static { 
    static var dispatchOnceToken: Int = 0 
} 

override func setUp() { 
    super.setUp() 
    continueAfterFailure = false 
     _ = urclassname.launchAppOnce 
} 

override func tearDown() { 
    super.tearDown() 
} 

는 테스트 케이스 클래스에 위의 코드를 사용 : 여기

는 신속 2.2과 2.3을위한 솔루션입니다. 이렇게하면 앱이 한 번만 실행되고 이전 테스트 사례가 끝난 곳에서 다음 테스트 사례가 시작됩니다.

+0

업데이트 된 답변을 확인하지 않은 경우 해결책이 있습니까? 그렇다면 답을 게시하십시오. – noor

1

테스트는 서로 독립적이어야합니다. Xcode 테스트의 실행 순서에 대한 알고리즘은 언제든지 변경 될 수 있습니다. 하나의 테스트가 실패하면 다음 테스트의 상태가 잘못되고 모든 후속 테스트가 실패하여 잘못된 피드백을 제공하기 때문에 서로에 의존하는 테스트를 수행하는 것이 허약 한 시스템입니다.

테스트가 서로 의존해야하는 경우 모든 코드를 여러 개의 어설 션이 포함 된 단일 테스트에 넣기 만하면됩니다. continueAfterFailure을 true로 설정하려고합니다.