单元测试:对List和List和一个日期时间

本文关键字:List 一个 日期 时间 int 单元测试 DateTime | 更新日期: 2023-09-27 18:16:25

我试图验证3个单元测试;我发现它们总是出错,因为断言可能不适合该类型的对象(或在创建对象时添加一些东西)。

下面是我的代码:

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()
        {
        } 
    }
}

有人看到我如何通过调整断言来编写这个对象,添加一些东西使其工作,或其他任何东西吗?

提前感谢您的回答

单元测试:对List<int>和List<DateTime>和一个日期时间

使用CollectionAssert。当断言集合时,AreEqual方法(ICollection, ICollection)

CollectionAssert.AreEqual(expected, actual);

验证两个指定集合是否相等。断言失败如果集合不相等

[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的测试看起来是正确的。如果它失败了,那就意味着你应该检查它正在测试的代码,以确保它正在做预期的事情。

当比较集合时,你应该使用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.");
}
相关文章: