Софтуерно Инженерство
Loading...
a.angelov avatar a.angelov 1319 Точки

Assert на дати при тестване?

Дайте идея как да тестваме дали две дати са еднакви или поне каква може да е причината при мен да не се получава? Опитвам с .ToString() както е показано в някои дема, но винаги ми връща, че датите не са еднакви - въпреки че са такива. Тоест код като този ми гърми:

Assert.AreEqual(bugsFromService[i].DateCreated.ToString(), bugsFromDb[i].DateCreated.ToString());

 

Тагове:
0
C# Web Services & Cloud
a.angelov avatar a.angelov 1319 Точки

Мда, по твоя начин трябва да се получи.

Обаче и с ToString() също трябва да стане - аз явно не съм довидял какво ми пише в грешката: Result Message: Assert.AreEqual failed. Expected:<09/04/2015 12:37:21>. Actual:<09/04/2015 15:37:21>.

Има едни 3 часа разлика, която ми дава и сега се чудя защо се получава така..., явно като влезе в базата става нещо... :)))

0
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки

С DateTime.Now ли го вкарваш в базата?

0
09/09/2015 13:49:08
a.angelov avatar a.angelov 1319 Точки

Да..., DateTime.Now.AddDays(...)

0
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки

Аз доколкото четох принципно е добра практика в базата дати да се вкарват с DateTime.UtcNow.

http://stackoverflow.com/questions/7708590/difference-in-usage-of-datetime-now-vs-datetime-utcnow

0
AleksandurSeferinkin avatar AleksandurSeferinkin 335 Точки

Според мен грешно сравняваш стойностите. Всяка дата в машината представлява 64 битово число, което е универсално и е едно и също за всички локализации.

Assert.AreEqual(bugsFromService[i].DateCreated.Ticks, bugsFromDb[i].DateCreated.Ticks);

По този начин не би трябвало да има проблеми, защото игнорираме различията в часовите пояси. Ако отново стойностите не са еднакви, значи работиш със съвсем различни дати.

2
Matrix avatar Matrix 1087 Точки

В този момент от това видео тук Наков споменава нещо, което винаги трябва да се има в предвид за DateTime.Now в C# и SQL сървър - https://youtu.be/hQ_O9yBN0Y4?t=7733

0
10/09/2015 10:29:50
a.angelov avatar a.angelov 1319 Точки

Да, това видео съм го гледал, и малко по-нататък Наков споменава, че точно за да елиминира разликата стрингосва двете сравнявани дати, като така реже милисекундите или нещо подобно беше.

С предложението на Александър Сеферинкин за ticks също не сработи :) Явно нещо друго бъркам за да ми дава 3 часа разлика..., и още не мога са се усетя какво :) А е сигурно, че работя с една и съща дата и час... - все пак преди тества зачиствам базата, тества създава ентити, вкарва го в базата, асъртвам...

Както и да е, благодаря на всички, ще търся проблема или просто няма да сравнявам датите :)

0