Xamarin Test Cloudを試してみたら、ハマった
iOSアプリをXamarin Test Cloudでテストしてみるというお話。 あとのためにメモ。
こちらのCalabash - XamarinのQuickStartを試してみた。 英語だが手順通りに進めていく。 ローカルでテストが通るところまでできた。 テストはRubyのcucumberのサンプルを利用。
Submitting the iOS App And Test - Xamarinまできて、Xamarin Test Cloudのいよいよ登場だというときに、
- Select the SimpleCreditCardValidator-cal target and specify iOS Device
これが見当たらない。Xcode7.3。参る。
とりあえずクラウド上でテストするためにはipaファイルが必要なので、Archiveをしてみてipaを作り、test-cloudコマンド(ipaをXamarin Test Cloudへアップロードするコマンド)で実行するがエラーが出る。 内容は「calabash.frameworkが含まれていない」というもの。
ちなみにtest-cloudコマンドには引数が多いが、 Xamarin Test CloudのNew Test Run からひな形が作成できる。
たしかにcalabash.frameworkはリリースビルドではリンクしないよう今回のチュートリアルで設定した。 なので、Archiveをデバッグビルドで行い、calabash.frameworkをipaに含めてみる。なんだかダメな予感がするが。
再度、デバッグビルドでArchiveしたipaをtest-cloudコマンドを使って試すと、rubyでエラー。 うーん。わからない。
ググっても情報が少ないのが、なかなかつらいです。 ちょうどこの日は無駄にやる気があったのでXamarin Forumで質問する。
Can not upload ipa file which is created sample code to Test Cloud - Xamarin Forums
今読み返すと、ところどころ英語が変だが通じるものだ。 そして、回答をいただく。
- Build My.app for arm arches
- $ mkdir Payload
- $ mv My.app Payload
- $ xcrun ditto -ck --rsrc --sequesterRsrc --keepParent Payload My.ipa
こんなのどこにも書いてなかったのですが・・・。 しかし、これで作成したipaをtest-cloudコマンドで指定するとなんと処理が始まるではないか。
なお上記フォーラムで「この方法、どこかに書いてあるの?」聞いたら、「ないんじゃない?ドキュメント更新するように伝えておくよ、フィードバックありがとう!」と中の人からコメント。 うーむ。クイックスタートくらいはスムーズに出来てほしいものだ。
何はともあれこれで行けるとおもいきや、またrubyのエラー。
Make sure that
gem install json -v '1.8.2'
succeeds before bundling.
環境はQuickStartのはじめのほうのInstalling the Calabash Sandbox - Xamarinでcalabash.sandboxをインストールしたのだけれども、なぜ。
エラーログを見ると、変なところのrubyが使われている。Server.app内のrubyだった気が(メモ忘れた)。意味不明。
素直にDocumentationを見て、rbenvで挑戦。Updating Ruby using rbenv - Xamarinを参照する。
ひさしぶりにbrewを使うとEl Capitanだからなのかエラーが起こる。brew updateが出来ない。 El Capitanにする前に/usr/local/が作られているから大丈夫だと思ったのに、そうではなかった。
Mac OS X El Capitan にアップデートした後に brew update が動かない場合の対処方法 | gotohayatoを参考にして直す。感謝。
諸々環境を整え、再度実行したら成功。 クラウド上でテストも動いた。ステップごとにスクリーンショットやメモリ使用量、CPU使用率も表示され、至れり尽くせりな感じ。
このまま安定してくれれば環境としては良さそうな感じ。
あとはUIテストをどこまで書くか、かな。こればかりはどのプラットフォームを使っても辛いイメージ。
もう少し検証をしたかったのだけど、トライアル期間ではここまでとなりそう。
あとはお仕事でやるときがあれば、って感じ。