Unit Testing Homework


1

Здравейте, отварям тема за първото домашно.

Дали някой може да погледне до където съм докарал домашното и да ми каже дали съм на прав път? -> GitHub

Трябва ли обезателно в тест методите да се използва Assert с неговите функционалности.Опитах навсякъде да използвам Assert, но просто на някой места не се сетих как да го направя, но теста си работи коректно според мен.




Отговори



2

Здравей колега,

Горе-долу си на прав път. Краткия отговор е - да, трябва да се ползва.

По дългия - Assert е цялата идея на тестовете - без него единствения вариант да не мине даден тест е да се хвърли Exception от тествания метод. Assert реално проверява дали условието, което си му задал е вярно и фейлва теста, ако е грешно. 

Например за теста JoinToCourse_ShouldAddStudentToCourseSuccessfully_IfStudentIsNotNull_AndStudentsAreLessThan30InThisCourse()

Ключовите думи са ShouldAddStudentToCourseSuccessfully и той трябва да провери точно това. В случая нямаш Assert и тестът ще мине винаги, освен ако JoinToCourse метода хвърли грешка по някаква причина.

В момента, в който най-отдолу му добавиш CollectionAssert.Contains(course.Students, student); ще започне да фейлва, ако по някаква причина извикания метод не е добавил студент в курса и ще разбереш, че нещо не е наред в кода (което е и цялата идея на unit-testing-a).

Няколко лекции по-късно ще се наложи единствените твои класове, които инстанцираш в тестовете да бъде System Under Test ( напр. CourseTests => Course) и ти препоръчвам да се запознаеш с идеята за мокването предварително (от предишни лекции или други ресурси)

Надявам се да съм бил полезен :)




1

Привет,

И от мен едно домашно - цък. Не съм сигурна до колко тестовете са адекватни, затова споделете, ако видите нещо нередно.

За проверка на уникалността на ID-тата (от Task1) използвам лист, в който събирам всички ID-та и съответно, ако дадено ID вече е използвано, при създаването на нов студент хвърля грешка. Заради това нещо в самите тестове, ако използвам рандом число за ID (в посочения обхват) и случайно използвам същото в друг тест малко по-надолу, изобщо ми игнорира какво проверявам в теста, а хвърля въпросната грешка за уникалността...сигурно трябва да си оправя логиката за проверката, но не се сещам как, таа ако някой има идеи, do tell :)


от Daniela_Popova (1125 точки)


0
Може ли да попитам кога излизат обикновено видеата на лекциите, тъй като се чудя кога ще излезе първата от Unit Testing?

от dobri19 (45 точки)

0
Ами обикновено е до няколко дена, но вместо да ги чакаш, по-скоро гледай видеа от предни сезони - например Компонентно тестване - пролетен сезон...като цяло от Архив -> Програмиране -> Програмиране [година] -> Качествен програмен код или Компонентно тестване и оттам си избираш лекция/лектор. 

от Daniela_Popova (1125 точки)



1

Hi encho! 

Just for the record - in homework's description it is mentioned, that student.ID needs to have double validation:

1. Is ID higher than 10000 and lower than 99999
2. Is ID unique in entire schoool. I know that it's just matter of one method, but anyway - always it's one more functionality to test :D

P.S. And BTW - have anyone reached task 2 and 3 from homework? 


от KonstantyCh (90 точки)


0

Hi Konstanty !

These are my methods for ID test(higher than 10000 and lower than 99999):

ID Test Methods

And thank you , I will add test for ID unique :D


от encho.enevski (316 точки)


1

Здравейте и от мен,

ето го и моето Домашно. Unit testing е напълно нов за мен.

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


от stoyan93 (5 точки)


0
Някой да каже, дали са ок тестовете и като цяло и останалото? Таск 1 . Благодаря!

от olebg (598 точки)