.NET MAUI の UI Test
はじめに
この記事は、.NET MAUI Advent Calendar 2023 の 23日目の記事です。 今回は、.NET MAUI の UI テストの方法について調べたことを書きます。
.NET MAUI の UI テスト方法
二つの方法があるようです。
- Xamarin.UITest を利用する方法
- Appium と NUnit を使う方法
Xamarin.UITest を利用する方法
Xamarin のときに提供されていたテストツールです。
.NET MAUI でも動くのか疑問に思ったのですが、GitHub 上にサンプルがありました。 また、Xamarin.UITest の NuGet を確認すると、.NET 6 移行となっているので、利用できそうです。
テストを書く方法ですが、UI テストで操作するコントロールに、 AutomationId
を付与し、その値を利用して UI のコントロールを操作することになります。
操作したコントロールに表示された値が正しいかなどを検証するテストフレームワークには、 サンプルでは NUnit が利用されていました。
以下は、サンプルのサイトから抜粋したコードです。
<Button x:Name="CounterBtn" Text="Click me" SemanticProperties.Hint="Counts the number of times you click" Clicked="OnCounterClicked" HorizontalOptions="Center" AutomationId="IncrementButton" />
Xamarin.UITest を利用して、Xamarin.Forms のコントロールを操作する方法については、過去にこんな記事を書いています。 .NET MAUI のコントロールの場合には、やり方が異なってくるかもしれませんが、参考になれば幸いです。
Appium と NUnit を使う方法
Microsoft Learn のサイトで最近見つけた記事です。 Xamarin.UITest でできなかった、Windows アプリのテストができるということなので、動作させようとしましたが、動きませんでした。 このあたりと関係しそうですが、色々試してみましたが、ダメでした。
Xamairn.UITest と同じように UI テストで操作するコントロールに、 AutomationId
を付与して、UI 操作を行うテストコードを書く必要があります。
以下は、サンプルからのコードの抜粋です。
<Button x:Name="CounterBtn" AutomationId="CounterBtn" Text="Click me" SemanticProperties.Hint="Counts the number of times you click" Clicked="OnCounterClicked" HorizontalOptions="Center" />
ただし、UI コントロールを操作するコードには、 Appium のライブラリを利用する必要があります。
public abstract class BaseTest { protected AppiumDriver App => AppiumSetup.App; // This could also be an extension method to AppiumDriver if you prefer protected AppiumElement FindUIElement(string id) { if (App is WindowsDriver) { return App.FindElement(MobileBy.AccessibilityId(id)); } return App.FindElement(MobileBy.Id(id)); } }
コントロールに表示された値などの検証には、サンプルでは NUnit が利用されていました。
おわりに
今回は、.NET MAUI の UI テスト方法について調べたことを、ざっくりと記事にしました。 深い検証や実験まではまだできていないので、時間のあるときに試したみたいと思います。