概要
ユニットテスト(=単体テスト)をNUnitを使用して
自動化してみます。
本記事では、dotnetコマンドを使用して操作していきます。
テストプロジェクトの追加と基本的な記載方法
1. プロジェクトの追加
テストの対象となるソリューションにテスト用プロジェクトを追加します。
「Test」という名前でテストプロジェクトを追加します。
$ dotnet new nunit -o Test
追加されたプロジェクト内に、以下のような雛形が追加されます。
これを参考にテストプログラムを追加していきます。
using NUnit.Framework; namespace Test { public class Tests { [SetUp] public void Setup() { } [Test] public void Test1() { Assert.Pass(); } } }
2. ソリューションへの追加
テストプロジェクトをターゲットのソリューションに追加します。
$ dotnet sln add ./Test/Test.csproj
3. 参照設定
テストプロジェクトからターゲットのプロジェクトを参照できるよう
参照設定に追加します。
ここではターゲットのプロジェクトは「Target」という名前とします。
$ dotnet add reference ../Target/Target.csproj
4. テストパターンの記載
以下のクラスのGetHelloWorldの戻り値をテストしてみます。
public static class Utils { public static string GetHelloWorld() { return "Hello World!"; } }
Assert.AreEqualを使用して
戻り値が「Hello World!」であることをテストします。
using NUnit.Framework; namespace Test { [TestFixture] public class UtilsTest { [Test] public void GetHelloWorld_Test() { var str = Utils.GetHelloWorld(); Assert.AreEqual(str, "Hello World!"); } } }
5. テストの実行
以下のコマンドでテストを実行します。
$ dotnet test
実行すると結果が表示されます。
テストの実行に成功しました。 テストの合計数: 1 成功: 1
戻り値を書き換えてNGとなるようにすると
以下のように結果が表示されます。
X GetHelloWorld_Test [52ms] エラー メッセージ: Expected string length 6 but was 12. Strings differ at index 0. Expected: "こんにちは!" But was: "Hello World!" -----------^ スタック トレース: xxxxx... テストの実行に失敗しました。 テストの合計数: 1 失敗: 1
これでテストの準備と実行ができました。
人の手によるテストではミスもあります。
このように自動化に頼るのがベストですね。
以上です。