2016-11-18 15 views
0

Я новичок в XCTest, у меня есть небольшой образец проекта для моего приложения, где у меня есть 10 тестовых примеров, и каждый тестовый пример является взаимозависимым, с проблемой, с которой я столкнулся, если я запускаю свой тест костюм после каждого теста мое приложение истекающий и вызывающему следующий метод, я не хочу, чтобы закрыть приложение, но он должен продолжать с того же места, где тест один закончилОстановить прекращение работы приложения после каждого тестового примера в XCTest

Спасибо заранее

+0

Моя проблема в том, что у меня есть приложение в Android и приложение в iPhone, например, с устройства Android. Я отправлю сообщение «HI», я хочу проверить, получен ли он в iPhone и наоборот, так как Например, я должен переключаться между двумя устройствами, поэтому мне нужно приложение в его начальном состоянии и функции, которые нужно разделить разными способами. – user3724559

ответ

0

Это плохая идея запустить приложение только один раз, чтобы выполнить тестовые примеры, поскольку последовательность тестовых примеров неизвестна в xcode ui test.

Но если вы хотите это плохо, вот решение. В быстрых 2.2 и 2.3 я использую

dispatch_once 

для этого требования.

В вашем случае класс тест, я думаю, что вы используете

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

вы должны использовать dispatch_once() здесь. если вы используете этот dispatch_once для XCUIApplication.launch(), это только запускает приложение один раз.

вот решение для быстрой 2,2 и 2,3:

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() 
} 

использовать приведенный выше код в классах тестирования. Это приложение запускается только один раз и запускает следующий тестовый пример, где он заканчивает предыдущие тестовые примеры.

+0

есть ли у вас какое-либо решение, если нет, пожалуйста, проверьте обновленный ответ. если да, напишите свой ответ. – noor

1

Испытания должны быть независимыми друг от друга. Помните, что алгоритм для выполнения порядка Xcode-тестов может измениться в любое время. Наличие тестов, которые зависят друг от друга, является хрупкой системой, поскольку, если один из тестов завершился неудачно, вполне вероятно, что состояние для следующего теста будет неправильным, и все последующие тесты потерпят неудачу, обеспечивая ложно отрицательную обратную связь.

Если у вас должны быть тесты, зависящие друг от друга, просто поместите весь свой код в один тест с несколькими утверждениями. Вероятно, вы хотите установить значение continueAfterFailure в true.

 Смежные вопросы

  • Нет связанных вопросов^_^