单元测试:对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()
{
}
}
}
有人看到我如何通过调整断言来编写这个对象,添加一些东西使其工作,或其他任何东西吗?
提前感谢您的回答
使用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.");
}