Workshop2 - Компонентно тестване C#


8

Здравейте,

Ще бъдат ли качени Unit - тестовете от днешния workshop, такива, каквито трябва да бъдат след като приключи и вечерната група ? 




Отговори



8

С леко забавяне, вече има авторско решение. 

ЛИНК

Оправени са грешките по условието и са променени няколко неща по кодa, вече няма coupling с Console, проблема там е решен по малко по-адекватен начин - метода ReadCommands е изкаран в отделен, клас като dependency, което ни позволява лесно да го мокнем, използвайки неговият интерфейс. 

Поздрави! :)


от Stev3n (2877 точки)


3

Имам въпрос за следния тест

"Start should read, parse and execute "AddToCategory" command, when the passed input string is in the format that represents a AddToCategory command, which should result in adding the selected product in the respective category."

Защо в авторското решение се проверява само дали се извиква метода, а не дали реално има такъв продукт в дадената категория? Същият въпрос важи и "RemoveFromCategory" , "AddToShoppingCart" и "RemoveFromShoppingCart".


от zombidust (97 точки)

1
Няма как да провериш колко продукта има в категорията защото няма такъв метод или проърти, затова единственото е да провериш дали просто е извикало метода за добавяне/махане на продукт.

от lllevski (1431 точки)



2
Може ли линка от workshop-а :) 

от dim.dim (245 точки)


4
tinyurl.com/unit-testing-cosmetics това е линка към зип-файл... в него има md-файл в който пише какво да се тества на solution-a на cosmetics от миналия workshop OOP... и той е в зипа и е работещ.. може да се променя при нужда естествено. Има и папка с outputs tests... Надявам се да съм помогнал и това да си търсил под линк от workshop-a... Успех за напред!

от RavenDark (170 точки)

1

Да това търсех, благодаря много:)

и на теб успех

иначе ако пуснат тестовете както каза nProdanov, ще е много хубаво


от dim.dim (245 точки)


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

от Tony_Nikolov (633 точки)


0
Малко извън темата, но ще може ли един линк към решенията на задачите от последния изпит по ООП?

от ivan.mihov1 (4988 точки)


2
Това ли търсиш?

от nProdanov (587 точки)

0
Идеално, супер :)

от ivan.mihov1 (4988 точки)


2
Нека наистина някой колега да качи поне линк към тестовете които той е написал .Просто за да можем да си сверим.



7
Утре по някое време ще кача решението

от Stev3n (2877 точки)


2

Може би не съм разбрал правилно, но както пише в книгата The Art of Unit Testing "5.6.4 Having more than one mock per test" не би трябвало да имаме повече от един мок обект в тестовете, а при тестването на CosmeticsEngine в методите има по 5+ мокнати обекта.

It’s considered good practice to test only one concern per test. Testing more than one concern can lead to confusion and problems maintaining the test. Having two mocks in a test is the same as testing several end results of the same unit of work. If you can’t name your test because it does too many things, it’s time to separate it into more than one test.

Кодът на CosmeticsEngine или написаното в книгата не е ОК, или аз съм в грешка :)


от owolp (175 точки)


3

1 mock, множество от stubs

assert-ваш срещу един обект ( мок-а ), но мокваш ( фейкваш ) колкото dependencies ти трябват за да си подкараш тест-а ( стъбовете ). Това разбрах от книгата.


от todorovh (2055 точки)

1

Загрях сега какво съм пропуснал.

Благодаря.


от owolp (175 точки)


1

Тестовете за дъжина на име 

//CreateCategory should throw IndexOutOfRangeException, 
        //when the passed "name" parameter is invalid. (length out of range)

са силно couple-нати към конкретни имплементации, докато факторито ( както и самият метод ) не е.

Би ли следвало в такъв случай да couple- нем и имената на тестовете ни към конкретния клас ? Да очакваме да е конкретното Category, със съответните му конкретни ограничения при валидация ?


от todorovh (2055 точки)


0

И аз си помислих същото, защото днес ограничението може да е до 15 символа а утре 20 и вече трябва да минаваш през всички тестове и да ги оправяш.

Лично аз вземах мин дължината и макс дължината от класа с константите така че като сменят там да се смени и в теста но така силно се couple-вам с класа с константи,

И аз бих искал да знам точно какво да направим в такъв случай, защото ако на изпита има такава проверка (според мен ще има) да знаем как да процедираме :)


от Merhatt (1406 точки)


1

Ок ли е при тестването на CosmeticsFactory класа да се проверяват exceptions , които се хврълят в други класове (category, shampoo, toothpaste, etc)? Тези проверки не са ли по-скоро по-подходящи за сътоветните класове, а не през даден клас да се тества кода на друг клас ?

+ това и грешките в условието не са точно тези, които се хвърлят при неправилни инпути..


от pdimova (256 точки)