かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Visual Studio Team ServicesからXamarin Test Cloudを使ってみよう(Android編)

iOS編はあるのかって?Mac持ってないのでできないのでMac持ってる人だれかお願いします。

Xamarinプロジェクトの作成

ということで、テスト対象のプロジェクトを作りましょう。 今回は、Prismのテンプレートパックを入れたら作られるプロジェクトテンプレートで行ってみたいと思います。

visualstudiogallery.msdn.microsoft.com

AndroidとiOSのプロジェクトを一応作っておきます。

f:id:okazuki:20161011125930p:plain

UITestプロジェクトの作成

プロジェクトの新規作成でCross-Platformの中にあるUI Test App (Xamarin.UITest | Cross-Platform)を作成します。今回はUITestの書き方の説明の回ではないので、さくっとデフォルトのままでいきます。ちょっとだけ中身を見ると、スクリーンショットをとっているだけのテストになります。

using System;
using System.IO;
using System.Linq;
using NUnit.Framework;
using Xamarin.UITest;
using Xamarin.UITest.Queries;

namespace UITest1
{
    [TestFixture(Platform.Android)]
    [TestFixture(Platform.iOS)]
    public class Tests
    {
        IApp app;
        Platform platform;

        public Tests(Platform platform)
        {
            this.platform = platform;
        }

        [SetUp]
        public void BeforeEachTest()
        {
            app = AppInitializer.StartApp(platform);
        }

        [Test]
        public void AppLaunches()
        {
            app.Screenshot("First screen.");
        }
    }
}

Xamarin Test Cloud

次は、VSTSにプロジェクトを上げる前にXamarin Test Cloudの環境を整えておきます。 Xamarin Test Cloudは、会社のメアドを使えば30日間トライアルできます。そうじゃなければ、ちょっと高いです。

Xamarin Test Cloud

画面上部のNew Test Runを選ぶとテスト対象の機種を選ぶ画面になります。+ New Android appから好きなものを選びましょう。私は3種類くらい選びました。

f:id:okazuki:20161011131152p:plain

次に言語とかえらびます。

f:id:okazuki:20161011131339p:plain

そうすると、こういうコマンドうってねっていう画面が出てきます。このコマンドを控えておきます。

f:id:okazuki:20161011131709p:plain

Visual Stduio Team Servicesの作成

VSTSでプロジェクトを作成します。https://oooooo.visualstudio.comからプロジェクトを作成しましょう。

f:id:okazuki:20161011131847p:plain

Codeのタブに行くとGitのリポジトリのURLが取得できるので、先ほどVisual Studioで作成したプロジェクトをPushしておきましょう。

f:id:okazuki:20161011132146p:plain

ビルド定義の作成

次にBuild & Releaseを開きます。New definitionを選択しましょう。

f:id:okazuki:20161011132321p:plain

Xamarin.Androidというのがあるので、それを選びましょう。

f:id:okazuki:20161011132502p:plain

次に、ビルドするリポジトリとかを選びましょう。GitHubとかも選べますね。今回はVSTSのリポジトリなのでそのままでいいです。

f:id:okazuki:20161011132705p:plain

作成するとTest Cloudのところだけ赤くなってるので、さきほど採取したコマンドから該当パラメータをコピペします。 赤で塗りつぶしてたのがそれにあたります。

f:id:okazuki:20161011132940p:plain

Saveして名前をつけます。ここではXamarinTestCloudという名前にしました。

Queue New Buildを押すとビルドが始まります。

こんなビルドエラーが出たら

f:id:okazuki:20161011133622p:plain

VSTS上のXamarinのバージョンと、ローカルでのXamarinのバージョンが食い違ってる(主にVSTSのほうが古いとか)とビルドでこける可能性があります。こんなときはつかえねーなーとあきらめるんじゃなくて、ビルドを自分のビルドマシンでやることができます。httpsで外部サイトが見える状態ならできるみたいなので敷居はわりと低いでしょう(認証プロキシは未検証)

画面上部の歯車を押してAgent Queuesを押すとDownload agentというのがあるので、そこからagentをダウンロードします。

f:id:okazuki:20161011133915p:plain

ダウンロードしながら、認証に必要なキーをとってきます。画面右上のほうからSecurityを選びます。

f:id:okazuki:20161011134142p:plain

Personal access tokan(PATとか略されてる)でAddをおして適当に情報を入れます。

f:id:okazuki:20161011134449p:plain

アクセス用のキーは控えておきます。(消すときにも必要になるので大事にとっておきましょう)

f:id:okazuki:20161011134709p:plain

ダウンロードしたagentをc:\agentあたりに展開します。

config.cmdを実行して構成します。URLは、自分のVSTSのURLでPATはさきほど入手したものです。あとはデフォルトでいいでしょう。サービスとして動かしたいひとはそのようにしてください。

PS C:\agent> .\config.cmd

>> Connect:

Enter server URL > https://okazuki.visualstudio.com
Enter authentication type (press enter for PAT) > PAT
Enter personal access token > ****************************************************
Connecting to server ...

>> Register Agent:

Enter agent pool (press enter for default) >
Enter agent name (press enter for KAZUKI-SFB) >
Scanning for tool capabilities.
Connecting to the server.
Successfully added the agent
Testing agent connection.
Enter work folder (press enter for _work) >
2016-10-11 04:51:23Z: Settings Saved.
Enter run agent as service? (Y/N) (press enter for N) >

run.cmdを実行するとエージェントが動き始めます。

PS C:\agent> .\run.cmd
Scanning for tool capabilities.
Connecting to the server.
2016-10-11 04:53:23Z: Listening for Jobs

この状態でビルド定義を編集してGeneralのタブにあるDefault agent queueをHostedからDefaultに変えることでagentをつかうようになります。

f:id:okazuki:20161011135638p:plain

SaveしてQueue new buildしましょう。

ビルド結果の確認

こんな感じでビルドが通れば成功です。

f:id:okazuki:20161011140652p:plain

Xamarin Test Cloud側にもこんな感じで結果が表示されます。

f:id:okazuki:20161011140845p:plain

f:id:okazuki:20161011140959p:plain

今後の課題

  • ローカルでUIテストしたいね
  • iOSどうなるの?