こういうのって実際のやつで試してみた方がいいんだろうけどとりあえず簡単なまとめ。
今回macでやっているのでxUnitを使っていきます。
次にソリューションから追加で新しいプロジェクトを追加でxUnitを追加する。
テストコード
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.True(true);}}}
実行は右にある単体テストのところから行う。
DisplayName
[Fact]にDisplayNameを加えると下の実行の所にDisplayNameが出てくる。
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact(DisplayName="サンプルテスト")]publicvoidTest1(){Assert.True(true);}}}
実行結果 左下のところにDisplayNameで設定したものが出ている。
Skip
[Fact]にSkipを加えるとそのテストはSkipされる。
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact(DisplayName="サンプルテスト")]publicvoidTest1(){Assert.True(true);}[Fact(Skip="無視する")]publicvoidTest2(){Assert.True(true);}}}
Timeout
[Fact]にTimeoutを設定してあげると時間の上限を定めることができる。
UnitTest1.cs
usingSystem.Threading.Tasks;usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact(DisplayName="サンプルテスト")]publicvoidTest1(){Assert.True(true);}[Fact(Timeout=3000)]publicasyncTaskTest2(){awaitTask.Delay(4000);Assert.True(true);}}}
Theory
メソッド一つで複数回の実行も可能
下記例であれば、aに1,0,-1がそれぞれ代入され実行される。
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Theory][InlineData(1)][InlineData(0)][InlineData(-1)]publicvoidTest1(inta){Assert.InRange(a,-2,2);}}}
以下Assertの使い方。
分からないものが結構あったので学んでいきたいところ...
最初のTrueだとか以外はABCの順番でやっていったので
後で同系統のものをまとめたい。
tureであるかどうか
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.True(true);}}}
falseかどうか
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.False(false);}}}
Listが空かどうか
UnitTest1.cs
usingSystem.Collections.Generic;usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.Empty(newList<string>());}}}
文字列の後ろにxxxが含まれているかどうか
引数1がxxxで引数2が対象の文字列
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.EndsWith("es","studies");}}}
AとBが同じかどうか
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.Equal("aaa","aaa");}}}
範囲に入っているかどうか
第一引数が実際のやつ
第二引数が下限
第三引数が上限
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.InRange(3,1,4);}}}
文字列もできるが使い道はないか。
下の例だとb,c,d,eが範囲となる
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.InRange("c","b","e");}}}
型の一致確認
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){inta=22;Assert.IsType(a.GetType(),32);}}}
型の不一致の確認
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){stringa="a";Assert.IsNotType(a.GetType(),32);}}}
正規表現とマッチしているかどうか
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.Matches("[a-z]","a");}}}
リストが空ではないかどうか
UnitTest1.cs
usingSystem.Collections.Generic;usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.NotEmpty(newList<string>{"apple"});}}}
AとBが同じではないかどうか
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.NotEqual("aaa","bbb");}}}
範囲に入っていないかどうか
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.NotInRange(5,1,4);}}}
Nullではないかどうか
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){inta=1;Assert.NotNull(a);}}}
同じではないかどうか
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.NotSame("a","b");}}}
Nullかどうか
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.Null(null);}}}
同じかどうか
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.Same("aaa","aaa");}}}
要素が一つかどうか
UnitTest1.cs
usingSystem.Collections.Generic;usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.Single(newList<int>{1});}}}
最初の文字がxxxで始まるかどうか
UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.StartsWith("red","redmine");}}}