さくせん:いろいろやろうぜ

いろいろなことをやって、楽しみます。

Xamarin Test Cloudを試してみたら、ハマった

iOSアプリをXamarin Test Cloudでテストしてみるというお話。 あとのためにメモ。

こちらのCalabash - XamarinのQuickStartを試してみた。 英語だが手順通りに進めていく。 ローカルでテストが通るところまでできた。 テストはRubyのcucumberのサンプルを利用。

Submitting the iOS App And Test - Xamarinまできて、Xamarin Test Cloudのいよいよ登場だというときに、

  1. 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

今読み返すと、ところどころ英語が変だが通じるものだ。 そして、回答をいただく。

  1. Build My.app for arm arches
  2. $ mkdir Payload
  3. $ mv My.app Payload
  4. $ 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テストをどこまで書くか、かな。こればかりはどのプラットフォームを使っても辛いイメージ。
もう少し検証をしたかったのだけど、トライアル期間ではここまでとなりそう。
あとはお仕事でやるときがあれば、って感じ。