2016-11-03 22 views
2

私は3ユニットテストを検証しようとしています。私は、そのタイプのオブジェクトに適合していないかもしれないアサーション(またはオブジェクトの作成時に何かを追加する)のために、彼らが常に間違っていたことを検出しました。ここでユニットテスト:リストのアサート<int>、リスト<DateTime>、日付時刻

は私のコードです:

using System; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 
using System.Collections.Generic; 

namespace TestsUnitairesSaisieHeures 
{ 
    [TestClass] 
    public class TestsSaisieHeures 
    { 
     [TestMethod] 
     public void NumeroSemaineTest() 
     { 
      //1 - Initialisation des variables 
      DateTime DateTest = new DateTime(2016,11,3); 
      List<int> expected = new List<int>(new int[] { 44, 45, 46, 47, 48 }); 
      List<int> actual; 

      //2 - Appel de la méthode à tester 
      actual = SaisieHeures.SaisieHeures.NumeroSemaine(DateTest); 

      //3 - Vérification du résultat 
      Assert.AreEqual(expected, actual); 
      Assert.Inconclusive("Vérifiez l\'exactitude de cette méthode de test."); 
     } 

     [TestMethod] 
     public void GetWeekDaysOfWeekFromTest() 
     { 
      int weekNumberTest = 33; 
      List<DateTime> expected = new List<DateTime>(new DateTime[] {new DateTime(2016,8,15),new DateTime(2016,8,16),new DateTime(2016,8,17), new DateTime(2016, 8, 18), new DateTime(2016, 8, 19), new DateTime(2016, 8, 20), new DateTime(2016, 8, 21) }); 
      List<DateTime> actual; 

      actual = SaisieHeures.SaisieHeures.GetWeekDaysOfWeekFrom(weekNumberTest); 

      Assert.AreEqual(expected, actual); 
      Assert.Inconclusive("Vérifiez l\'exactitude de cette méthode de test."); 
     } 

     [TestMethod] 
     public void FirstDateOfWeekISO8601Test() 
     { 
      int yearTest = 2016; 
      int weekOfYearTest = 44; 
      DateTime expected = new DateTime(2016,11,1); 
      DateTime actual; 

      actual = SaisieHeures.SaisieHeures.FirstDateOfWeekISO8601(yearTest, weekOfYearTest); 

      Assert.AreEqual(expected, actual); 
      Assert.Inconclusive("Vérifiez l\'exactitude de cette méthode de test."); 
     } 

     // Pour exécuter du code avant d'exécuter le premier test dans la classe 
     [ClassInitialize()] 
     public static void MyClassInitialize(TestContext testContext) 
     { 
     } 

     // Pour exécuter du code après que tous les tests ont été exécutés dans une classe 
     [ClassCleanup()] public static void MyClassCleanup() 
     { 
     } 

     // Pour exécuter du code avant d'exécuter chaque test 
     [TestInitialize()] 
     public void MyTestInitialize() 
     { 
     } 

     // Pour exécuter du code après que chaque test a été exécuté 
     [TestCleanup()] 
     public void MyTestCleanup() 
     { 
     } 
    } 
} 

誰もが私は、私のオブジェクトにアサーションを適合させることによって、これをコーディングそれを動作させるために何かを追加、または何か他の方法を参照してください?

ご回答いただきありがとうございます。

+0

使用あなたのコレクションを持っていることを確認したい場合はCollectionAssert – Nkosi

答えて

2

CollectionAssert.AreEqual Method (ICollection, ICollection)コレクションのアサート時。

CollectionAssert.AreEqual(expected, actual); 

は、指定された2つのコレクションが等しいことを検証します。コレクションが等しくない場合、アサーションは に失敗します。

[TestMethod] 
public void NumeroSemaineTest() 
{ 
    //1 - Initialisation des variables 
    DateTime DateTest = new DateTime(2016,11,3); 
    List<int> expected = new List<int>(new int[] { 44, 45, 46, 47, 48 }); 
    List<int> actual; 

    //2 - Appel de la méthode à tester 
    actual = SaisieHeures.SaisieHeures.NumeroSemaine(DateTest); 

    //3 - Vérification du résultat 
    CollectionAssert.AreEqual(expected, actual); 
    Assert.Inconclusive("Vérifiez l\'exactitude de cette méthode de test."); 
} 

DateTimeとテストが正しく見えます。それが失敗している場合は、それが期待していることを確実にするためにテストしているコードをチェックする必要があります。

+1

同じ数量の同じアイテムが同じ順序であれば気にしません['CollectionAssert.AreEquivalent(ICollection、ICollection)'](https://msdn.microsoft.com/en-us/library) /ms243779.aspx)代わりに –

+0

Noted。それは – Nkosi

+0

2作品3(リストとリストのもの)を知ってうれしいです。 1つは残った。 DateTimeの単体テストの問題は、それが2つのDateTimeとその内容すべて(日付と時間)を比較していると思います。私は日付部分を節約したいだけです。私はこの最後のユニットテストのために何をすべきか見なければならない。ありがとう@Nkosi;) –

1

(あなたは自分のアイテムを比較するコレクションはで同じであることを確認したい場合は)あなたがSequenceEqualを使用する必要がありますコレクションを比較する:

[TestMethod] 
public void NumeroSemaineTest() 
{ 
    //1 - Initialisation des variables 
    DateTime DateTest = new DateTime(2016,11,3); 
    List<int> expected = new List<int>(new int[] { 44, 45, 46, 47, 48 }); 
    List<int> actual; 

    //2 - Appel de la méthode à tester 
    actual = SaisieHeures.SaisieHeures.NumeroSemaine(DateTest); 

    //3 - Vérification du résultat 
    Assert.IsTrue(expected.SequenceEqual(actual)); 
    Assert.Inconclusive("Vérifiez l\'exactitude de cette méthode de test."); 
} 
+0

あなたの答えは@DmitryBychenko;)ありがとう –