2016-03-03 157 views
7

我試圖設置我的UI測試目標的語言和區域,不幸的是它似乎不工作。Xcode 7 UI測試目標區域設置和區域設置

我已經試過兩種方式,第一種:

  • 產品|計劃|編輯方案
  • 運行|選項
    • 應用程序語言:法語
    • 應用地區:法國
  • 測試|參數
    • 使用運行操作的參數和環境變量:經過

我試試這個另一種方式:

  • 產品|計劃|編輯方案
  • 測試|參數
    • 使用運行操作的參數和環境變量:未選中
    • 參數在發射過:
      • -AppleLanguages (French)
      • -AppleLocale fr_FR

每種方法resultin g在UI中測試仍在發生在英語中。此外,當我點擊錄音按鈕時,它會以法語運行...

所以如果我做錯了什麼,我會很高興知道!

提前致謝!

+1

你有想過嗎?我也有完全一樣的問題。即使模擬器設置改變也沒有效果:-( – ChaosSpeeder

回答

8

我已經想通了。我在launchArguments中設置了區域設置,以便在Xcode中進行臨時測試。

override func setUp() { 
    super.setUp() 

    // Put setup code here. This method is called before the invocation of each test method in the class. 

    // In UI tests it is usually best to stop immediately when a failure occurs. 
    continueAfterFailure = false 
    app = XCUIApplication() 
    app.launchArguments = [ 
     "-inUITest", 
     "-AppleLanguages", 
     "(de)", 
     "-AppleLocale", 
     "de_DE" 
    ] 

對於CI我使用Felix Krause的fastlane並獲取快照的本地化截圖。

+0

Woot!謝謝!我工作,即使我不明白爲什麼目標設置沒有! (我也使用Felix Krause的工具) – Zaphod

+0

有人會認爲方案設置可以完成這項工作,但它們不會。先生,你是英雄! –

+0

不好意思爲我工作。至少在目標應用程序中使用[NSLocale currentLocale] .localeIdentifier。它忽略啓動參數,而是讀取模擬設置。實際上,這與另一篇文章緊密相關:「參數實際上傳遞給測試本身,但不傳遞給測試的應用程序」。 請參閱http://stackoverflow.com/questions/35463150/scheme-language-setting-ignored-in-ios-unit-and-ui-tests 此外蘋果在WWDC視頻中聲明。只有測試運行器包可以通過可訪問性與應用程序目標進行交互。 –

0

嘗試更改模擬器上的規格。它每次都適合我。

在模擬器: 設置>通用>語言&地區> iPhone語言 - >更改此處

+0

謝謝,但不幸的是,這種方法有兩個注意事項:當你重置模擬器時,你的配置鬆動,但最重要的是,它只能在本地的模擬器因爲它在CI上運行時在Xcode服務器上運行,所以您不能訪問仿真器上運行的測試。 – Zaphod

+0

對不起,那是我唯一的拍攝。祝你好運 –