Xamarin.iOS アプリの単体テスト
このドキュメントでは、Xamarin.iOS プロジェクト用の単体テストを作成する方法について説明します。 Xamarin.iOS での単体テストは、Touch.Unit フレームワークを使用して行います。このフレームワークには、iOS テスト ランナーと、単体テストを記述するために使い慣れた一連の API を提供する Touch.Unit という NUnit の変更バージョンの両方が含まれます。
Visual Studio for Mac でのテスト プロジェクトの設定
プロジェクトの単体テスト フレームワークを設定する場合、単に iOS 単体テスト プロジェクトという種類のプロジェクトをソリューションに追加するだけです。 その場合、ソリューションを右クリックし、[追加]、[新しいプロジェクトの追加] の順に選択します。 リストから、[iOS]、[テスト]、[Unified API]、[iOS 単体テスト プロジェクト] の順に選択します (C# または F# を選択できます)。
これで基本的なプロジェクトが作成されます。このプロジェクトは基本的なランナー プログラムを含み、新しい MonoTouch.NUnitLite アセンブリを参照します。プロジェクトは次のようになります。
AppDelegate.cs
クラスにはテスト ランナーが含まれ、次のようになります。
[Register ("AppDelegate")]
public partial class AppDelegate : UIApplicationDelegate
{
UIWindow window;
TouchRunner runner;
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
// create a new window instance based on the screen size
window = new UIWindow (UIScreen.MainScreen.Bounds);
runner = new TouchRunner (window);
// register every tests included in the main application/assembly
runner.Add (System.Reflection.Assembly.GetExecutingAssembly ());
window.RootViewController = new UINavigationController (runner.GetViewController ());
// make the window visible
window.MakeKeyAndVisible ();
return true;
}
}
Note
iOS 単体テストのプロジェクト タイプは、Windows 上の Visual Studio 2019 または Visual Studio 2017 では使用できません。
一部のテストの書き込み
これで基本的なシェルの準備ができたので、最初の一連のテストを書く必要があります。
テストは、[TestFixture]
属性が適用されたクラスを作成することで書き込まれます。 各 TestFixture クラス内では、テスト ランナーで呼び出すすべてのメソッドに [Test]
属性を適用する必要があります。 実際のテスト フィクスチャはテスト プロジェクトのどのファイルにも存在できます。
作業をすばやく開始するには、[追加]、[新規ファイルの追加] を選択し、Xamarin.iOS グループの [UnitTests] を選択します。 これで、以下のように成功したテスト、失敗したテスト、および無視されたテストをそれぞれ 1 つずつ含むスケルトン ファイルが追加されます。
using System;
using NUnit.Framework;
namespace Fixtures {
[TestFixture]
public class Tests {
[Test]
public void Pass ()
{
Assert.True (true);
}
[Test]
public void Fail ()
{
Assert.False (true);
}
[Test]
[Ignore ("another time")]
public void Ignore ()
{
Assert.True (false);
}
}
}
テストの実行
ソリューション内でこのプロジェクトを実行するには、プロジェクトを右クリックし、[Debug Item]\(アイテムのデバッグ\) または [Run Item]\(アイテムの実行\) を選択します。
テスト ランナーでは、登録されるテストを確認し、実行可能なテストを個別に選択できます。
個々のテスト フィクスチャを実行する場合は、入れ子ビューからテスト フィクスチャを選択します。あるいは、"すべて実行" ですべてのテストを実行することもできます。 既定のテストを実行する場合、成功したテスト、失敗したテストおよび無視されたテストが 1 つずつ含まれることが想定されます。 そのレポートは次のようになり、失敗したテストに直接ドリルダウンして、失敗に関する詳細情報を見つけることができます。
IDE のアプリケーション出力ウィンドウで、実行中のテストとその現在の状態を確認することもできます。
新しいテストの書き込み
NUnitLite は、Touch.Unit プロジェクトという NUnit の変更バージョンです。 .NET 用の軽量なテスト フレームワークであり、NUnit のアイデアに基づいており、その機能のサブセットを提供します。 最小限のリソースを使用し、埋め込みおよびモバイル開発で使用されるものなど、リソースに制限のあるプラットフォームで実行されます。 Xamarin.iOS では NUnitLite API を使用できます。 単体テスト テンプレートで提供される基本的なスケルトンの場合、メイン エントリ ポイントは Assert クラス メソッドになります。
assert クラス メソッドに加え、単体テスト機能は、NUnitLite の一部である以下の名前空間に分けられます。