Професионална програма
Loading...
+ Нов въпрос
mbeleva88 avatar mbeleva88 69 Точки

[КПК] Unit-Testing - TestCleanup

Здравейте,

Тъй като не ми стана много ясно, моля някой да потвърди дали винаги трябва да имаме [TestCleanup] с някакъв метод Cleanup{ } например - в който нищо не пишем, ако няма никакви ресурси за затваряне?

Какво всъщност clean-ва, ако е празен метода?

Същият върпос и за ClassCleanup?

И общо взето всичко свързано с Cleanup attrubutes, което не съм се сетила да питам.

Благодаря предварително.

Тагове:
0
C# OOP Advanced 17/01/2016 23:55:44
KatyaMarincheva avatar KatyaMarincheva 572 Точки
Best Answer

Ето малко информация за използването на TestCleanup() и ClassCleanup()

https://softuni.bg/forum/5010/homework-kpk-unit-testing-2015

в този пост давам един примерен вариант, в който се ползват.

А иначе по смисъл: не са празни методи - пише се код в тях; идеята е, че често UnitTest-овете правят нови тестови записи в бази данни например (в най-простия пример е един List, към който добавяме и махаме елементи - за да проверим дали методите ни работят). Но понеже UnitTests се правят най-вече в реални бази данни, а тестовите записи са недействителни (например добавяме измислени потребители в базата данни на един сайт, за да видим дали се записват, как се сортират и т.н.) - след като свършим с тестовете, искаме тези недействителни записи да ги изтрием - това е идеята на TestCleanup() и ClassCleanup() - да държат сметка за въведените недействителни (тестови) данни, и след края на тестовете - да изтрият само тях.

3
Ivaylo.Goranov avatar Ivaylo.Goranov 68 Точки

Ами аз доколкото разбрах не е нужно да ползваш винаги нито [TestCleanup], нито [ClassCleanup]. В демо примера към лекцията са оставени без имплементация само като пример, ако поради тази причина ти възниква въпроса. Ако нямат имплементация, съответно нищо не следва да правят.
А иначе накратко, доколкото аз рабрах:
1. [ClassInitialize] изпълнява код преди останалия код в тестовия клас. Не се сещам за пример в момента.
2. [ClassCleanup] изпълнява код след останалия код в тестовия клас. Не се сещам за пример в момента.
3. [TestInitialize]] изпълнява код преди кода на всеки отделен метод в тестовия клас. Примерно можеш да инициализираш обект в метода с този атрибут, вместо да го инициализираш всеки път във всеки отделен метод.
4. [TestCleanup] изпълнява код след кода на всеки отделен метод в тестовия клас. Предполагам би било удобно при освобождаване на ресурси (пр. отворени файлове).

0
18/01/2016 00:08:06