2015-10-12 3 views
14

私は、いくつかのtextFieldを検証している状況があります。私はUIテストを実行しようとしていますが、失敗すると、エラーメッセージ(潜在的に違うメッセージがどのフィールドが無効でどのような方法であるかによって、ポップアップ表示されます)が表示されます。UI Test(Xcode 7)の文字列のローカリゼーションにアクセスできない

アラートが表示されただけでなく、正しいメッセージが表示されていることを確認したいと思います。私が抱えている問題は、比較のためにローカライズされたテキストを取得する必要があることです(英語以外の言語でテストを実行する場合)。しかし、UITestでNSLocalizedStringを呼び出すと、正しいローカライズされた文字列を収集できませんキー[デフォルト])

ファイルをUITestターゲットに追加しようとしましたが、役に立たなくなりました。これが可能なら誰でも知っていますか?サイドノートとして

編集:私もUIAlertViewのアクセシビリティ識別子を設定してみましたが、私はそれが存在しないことアクセシビリティ識別子を照会するとき、私は唯一の後方思わ警告のタイトルを使用して、それを照会することができます。

+0

この問題を回避するには、英語で起動するアプリを強制することです

  • は、次のような機能を追加します。 、(起動引数)、その後、英語の文字列に対してテストします。しかし、最適な解決策ではありません。 – ssrobbi

  • 答えて

    18

    UIテストでは、メインバンドルはランダムランチャーアプリのようです。そのため、.stringsファイルは表示されません。テストバンドルに追加したにもかかわらず、NSLocalizedStringが間違ったバンドルをチェックしています。これを回避するには、次のような呼び出しが必要です。

    NSLocalizedString("LOCALIZATION_KEY", bundle: NSBundle(forClass: AClassInYourUITests.self), comment: "") 
    

    これは、ヘルパーメソッドにすることができます。

    +8

    Localizable.stringsに対応するバンドルリソースをコピーしましたが、デバイスの言語に関係なく、常に英語版のキーが取得されます。どんなアイデア@マヌエル? – Matias

    3

    はここに私のソリューションです:あなたのUIテストの対象で

    1. - >フェーズをビルド - >コピーバンドルリソースは、必要なローカライズファイル(例えばのLocalizable.strings)を追加します。

      func localizedString(key:String) -> String { 
          /*1*/ let localizationBundle = NSBundle(path: NSBundle(forClass: /*2 UITestsClass*/.self).pathForResource(deviceLanguage, ofType: "lproj")!) 
          /*3*/ let result = NSLocalizedString(key, bundle:localizationBundle!, comment: "") // 
          return result 
      } 
      
      
      /*1 Gets correct bundle for the localization file, see here: http://stackoverflow.com/questions/33086266/cant-get-access-to-string-localizations-in-ui-test-xcode-7 */ 
      /*2 Replace this with a class from your UI Tests*/ 
      /*3 Gets the localized string from the bundle */ 
      
    2. このような関数を使用します:私が見つけたこのためapp.buttons[localizedString("localized.string.key")]

    +0

    deviceLanguageを動的に取得することはできませんか?私はデバイスの言語を指定する必要はないと思っています。UITestクラスは、それからローカリゼーションを取得するためにテストしているデバイスへの接続の感覚を持っていませんか? – Sti

    関連する問題