Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9509

C# xUnit

$
0
0

こういうのって実際のやつで試してみた方がいいんだろうけどとりあえず簡単なまとめ。
今回macでやっているのでxUnitを使っていきます。

まずはコンソールアプリのプロジェクトを作る。
スクリーンショット 2019-12-14 0.20.35.png

次にソリューションから追加で新しいプロジェクトを追加でxUnitを追加する。

スクリーンショット 2019-12-14 0.25.26.png

テストコード

UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact]publicvoidTest1(){Assert.True(true);}}}

実行は右にある単体テストのところから行う。

スクリーンショット 2019-12-15 0.01.49.png

DisplayName

[Fact]にDisplayNameを加えると下の実行の所にDisplayNameが出てくる。

UnitTest1.cs
usingXunit;namespaceunit_sample{publicclassUnitTest1{[Fact(DisplayName="サンプルテスト")]publicvoidTest1(){Assert.True(true);}}}

実行結果 左下のところにDisplayNameで設定したものが出ている。

スクリーンショット 2019-12-15 1.07.00.png

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");}}}

Viewing all articles
Browse latest Browse all 9509

Trending Articles