.NET継続的インテグレーションテストNUnitのファイルアサーションの章、および文字列のアサーションアサーションのコレクション

シリーズカタログ

この方法の使用は基本的に仕事でほとんどのタスクを完了することができることを思い出して、それを達成するためのいくつかの機能は非常に面倒で、例えば、字符串相等性比较不区分大小写,字符串是否匹配某一正则规则,集合中的每一个(某一个)元素是否符合特定规则というように、NUnitのは、通常のアサーションを達成することがより困難のいくつかを実装するために使用されるいくつかの具体的な方法を提供拡張型およびメソッド。

ここではいくつかされているStringAssertは、以下の方法を入力します

StringAssert.AreEqualIgnoringCase(文字列期待、実際の文字列)

二つの文字列は、大文字と小文字を区別しない場合にアサート同等である場合、この方法が使用され、2つのパラメータを提供する必要があり、最初のサンプルは、もはや、この方法は比較的簡単である。第二は、実際の結果であり、利用可能な期待される結果ではありません。

NUnitの2つのパラメータを提供する必要がある多くの方法があることに注意してください、通常下状況が最初の結果が期待されており、第二は、実際の結果であります

StringAssert.Contains

文字列は最初のパラメータが文字列が含まれている前記別の文字列を含むかどうかをアサートするために、第二は、実際の文字列は、音符セマンティクスが特に明らかではないが、あります

        [Test]
        public void DemoTest()
        {
            StringAssert.Contains("hello", "hello,world");
        }

このコードは、成功を返します

StringAssert.StartsWith

アサート文字列は、(いくつかの)文字で始まるかどうか

       [Test]
        public void DemoTest()
        {
            StringAssert.StartsWith("h", "hello,world");
        }

StringAssert.EndsWith

そしてStringAssert.StartsWith類似し、文字列クラスは、このメソッドを持って、私たちはもっとよく知っていると信じて

StringAssert.IsMatch

指定された文字列のアサーションは、通常のルールに合致するかどうか

[警告]この方法は、感知スイッチありません

ここでの2つです文件(目录)アサーション方法以下の二つのクラスに関連するアサーションクラスFileAssertとDirectoryAssertは基本的に同じですが、アサーションは、たとえば以下のディレクトリがアサートされているファイル、。であるFileAssert

FileAssert.AreEqual

この方法は、2つのファイルは同じファイルであるかどうかをアサートするために使用され、文字列引数を受け入れ

これは、文字列のパスがないディレクトリやファイルが存在しない、ファイルを指している必要があり、注目されるべきです。

FileAssert.Exists

ファイルは、アサーション、受け入れのために存在するかどう字符串参数FileInfoのパラメータとして

同様DirectoryAssert方法、及びこれらの方法はアサートに対応する反対方向である、名前ではない前記方法は、容易に理解されます

ユニットテストプロセス、私たちはしばしば、コレクションに対処する必要があり、NUnitの提供でCollectionAssertのコレクション型のアサーションを扱うためのクラスが

ここではどのようなクラスは、次の主張です

CollectionAssert.AllItemsAreInstancesOfType

特定の種類の要素があるかどうかのアサーションの集合。

        [Test]
        public void DemoTest()
        {
            ArrayList ar = new ArrayList {"a", "b", "c"};
            CollectionAssert.AllItemsAreInstancesOfType(ar, typeof(string));
        }

上記の主張は、私たちがArrayListに追加したので、文字列型の要素に満ちていた、成功を返します。

最初は実際のコレクション、第二が期待されているタイプであり、多くのアサーションは最初の引数の型を楽しみにしている、第二は、実際の型であり、この方法は、反対であることに留意すべきです

サポート親クラスのこのタイプは、例えば、場合typeof(object)それができる、意味論の観点から、要素は文字列型で、オブジェクト型は、通されます

CollectionAssert.AllItemsAreNotNull

すべての要素のコレクションNULLではない、すなわちコレクションがnull要素が含まれていない、このメソッドはパラメータを1つだけ持っていると主張するために、我々は、着信コレクションを判断する必要があります

CollectionAssert.AllItemsAreUnique

私たちの内部要素のコレクションを主張するための要素の重複セットが存在しないことを、すべてユニークです。

[警告]あなたはクラス型をオーバーライドする必要がある場合には、この方法は、大型のカスタムコンパレータのサポートを提供していないことに留意すべきである、それだけでは、そのような文字列、int型、日時などのように単純型、場合にのみを主張するために使用することができますequalsし、gethashcodeしかし、我々は、通常はこれをしないが、複雑なタイプかどうかを判断する場合にのみ、クラス外のコンパレータを提供するために、我々は後に紹介します

ここでは、この問題を説明するための一例です

      [Test]
        public void DemoTest()
        {
            Person[] psn = new Person[] {
                new Person { Name="sto",Age=32,BirthDay=DateTime.Today.AddYears(-10)},
                new Person { Name="sto",Age=32,BirthDay=DateTime.Today.AddYears(-10)}};
            CollectionAssert.AllItemsAreUnique(psn);
        }

Persnなく、同じオブジェクトが、実際のビジネスは、二つのオブジェクトのプロパティは、正確に等しい我々は結果が予想以上に、彼らは同じだと思うときうち二つが新しいので、上記のコードは、テストに合格することではありません

CollectionAssert.AreEqual

この方法は、たIComparerを引数として提供提供するが、コレクションは非常に便利たIComparerないが、二組をアサートするため(二組は、要素が単純なオブジェクトである場合、オブジェクトは、この方法によって複雑にされた場合、非常に便利ではない、等しいです)

[警告]二つは(勿論)等しくなければならない。ここでの要素のセットの最初の数に等しく設定、要素の第二セット顺序必须一致的

別の点が、上記の二つの注文要素の一貫性を述べたように、注目すべきである、と等しい考える実行時の型と一致していることに留意すべきで、二組の类型不必一样、例えば、アレイであり、一つはリストであり、泛型参数也不必须一样

限り、実行時の型が同じであるとして、

以下のコードを考えてみましょう

        [Test]
        public void DemoTest()
        {
            int[] a = {3, 4, 5};
            List<object> b =new List<object> {3, 4, 5};
            CollectionAssert.AreEqual(a, b);
        }

AとBの異なるコレクション型の2セットがあり、ジェネリック型は同じではありませんが、実行時間が同じであるので、上記のコードの実行が成功ステータスを返します

CollectionAssert.AreEquivalent

この方法は、同等の要素の二組は、要素の二組の同じタイプの場合、その数は、上記の方法に比べて、同等とみなされる、そうでないかどうかを決定するために使用されます关心顺序

        [Test]
        public void DemoTest()
        {
            int[] a = {3, 4, 5};
            List<object> b =new List<object> {4,3, 5};
            CollectionAssert.AreEquivalent(a, b);
        }

上記のコードのテストを通じ

CollectionAssert.Contains

コレクションは要素が含まれているかどうかを主張するために

なお、決定にコレクション要素を含んでいるかどうかを、指定された要素および要素が実行している限り、同じ特定の型を有し、構成する要素の同じ値、即ち、その組

次のコードスニペットを考えてみましょう


        [Test]
        public void DemoTest()
        {
            int[] a = {3, 4, 5};
            object element = 4;
            List<object> b =new List<object> {element,3, 5};
            CollectionAssert.Contains(b, 4);
        }

4のint型の値の要素が含まれていない上記のコードセグメントにおけるBセットは、唯一の要素4は、型オブジェクトであり、それは、真の実行時int型であるため、上記のテストが渡されます。

CollectionAssert.IsEmpty

セット、空のセットをアサートするために、すなわち要素数が0であります

CollectionAssert.IsOrdered

要素はによって設定されるアサートするための正のシーケンスの構成、いわゆる正のシーケンスは、通常の順序の順に配置されアラビア数字又は文字でテーブルを参照します。

CollectionAssert.IsSubsetOf

別のセット内のサブセットのセットは、上記と同じであるかどうかを決定するため、これら二組のセットと同じタイプである必要はない、完全に別の組に含まれる長い要素(アレイとすることができる、リストです)それは別のセットのサブセットであることをコレクション、すなわち、

限り、完全に別のセットに含まれるコレクション要素、必ずしも同じ順序として

CollectionAssert.IsSupersetOf

セットをアサートするために決定された使用のようなサブセットのか​​別のセットのスーパーセットです。

上記の方法のほとんどは反対を決定する方法を持っている、マルチないの名前は、ここに記載されていません

おすすめ

転載: www.cnblogs.com/tylerzhou/p/11300896.html