Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Бабин Георгий #240

Open
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

tripples25
Copy link

@@ -5,28 +5,54 @@

namespace HomeExercises
{
[TestFixture]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[TestFixture] можно не писать, если внутри класса есть [Test] или [TestCase], .net всё поймет)

Comment on lines 13 to 15
[TestCase(1, -1, false, TestName = "scale is negative")]
[TestCase(1, 2, false, TestName = "scale is greater than precision")]
[TestCase(1, 1, false, TestName = "scale is equals precision")]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Почему в последних трех тестах поменялся флаг onlyPositive? Разве мы можем гарантировать, что не он стал виновником падения при создании объекта?

Обычно в тесткейсе меняется какой-то один проверяемый или пара связанных параметров, тогда явно видна зависимость параметров от результатов работы кода. Сейчас же эта связь размазалась, т.к. в названии тесткейса фигурируют только scale и precision, а меняется ещё и onlyPositive

[TestCase(3, 2, true, "+1..23", TestName = "value has incorrect format")]
[TestCase(17, 2, true, "0.000", TestName = "value's fraction part length is greater than scale")]
[TestCase(5, 2, true, "-0.00", TestName = "negative sign when onlyPositive is true")]
[TestCase(3, 2, true, "+0.00", TestName = "intPart and fractPart together is greater than precision")]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Давай подумаем, точно ли все тесткейсы здесь обработаны. Безусловно, ты уже обработал основные, но есть так же и некоторые граничные и совсем неадекватные вещи)) Никогда не знаешь, чего можно ожидать от пользователя)

}

[Test]
[Description("Альтернативное решение. Какие у него недостатки?")]
/* 1. Непонятно из названия, что тест проверяет и какого результата ожидает.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Всё верно, хорошо расписал

@@ -7,28 +7,33 @@ public class ObjectComparison
{
[Test]
[Description("Проверка текущего царя")]
[Category("ToRefactor")]
public void CheckCurrentTsar()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ты написал, что нейминг соседнего теста не блещет читаемостью и понятностью, а что скажешь насчет этого?)

}

[TestCase(3, 2, true, null, TestName = "value is null")]
[TestCase(3, 2, true, "", TestName = "value is empty")]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачастую null, пустая строка и ещё пробел идут паровозиком

@@ -5,28 +5,54 @@

namespace HomeExercises
Copy link

@desolver desolver Nov 28, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Понимаю, что этот файл создавал не ты, но быть может задумка автора как раз и была в том, чтобы с какими-то конвентами знакомить

В большом продакшене придется работать с тысячами файлов и классов, и всегда удобно, когда каждый класс, интерфейс, enum и тд лежит в своем собственном файле. Давай тут сделаем так же

Аналогично с соседним файлом

a.Should().Throw<ArgumentException>();
}

[TestCase(1, 0, true, TestName = "with all arguments")]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужен ли [TestCase], когда тесткейс всего один?

{
public class NumberValidatorTests
{
[TestCase(0, 2, false, TestName = "precision is zero")]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По факту onlyPositive сейчас не используется, т.к. никак не влияет на результаты работы теста и всегда false

Comment on lines 20 to 39
[Test]
public void Constructor_Success_WithThreeArguments()
{
Action a = () => { new NumberValidator(1, 0, false); };
a.Should().NotThrow();
}

[Test]
public void Constructor_Success_WithTwoArguments()
{
Action a = () => { new NumberValidator(1, 0); };
a.Should().NotThrow();
}

[Test]
public void Constructor_Success_WithOneArgument()
{
Action a = () => { new NumberValidator(1); };
a.Should().NotThrow();
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Второй и третий аргумент совпадает с аргументами по умолчанию - те же значения, поэтому нет разницы - вызовешь ты конструктор явно с тремя аргументами, как в первом тесте, либо с одним, как в последнем, результат один и тот же.

Поэтому тесты можно схлопнуть в один с [TestCase], если хочешь поиграться с аргументами, либо просто схлопнуть под один [Test]

[TestCase(17, 2, true, "0.000", TestName = "value's fraction part length is greater than scale")]
[TestCase(5, 2, true, "-0.00", TestName = "negative sign when onlyPositive is true")]
[TestCase(3, 2, true, "+0.00", TestName = "intPart and fractPart together is greater than precision")]
public void IsValidNumber_ReturnsFalse_OnIncorrectArguments(int precision, int scale, bool onlyPositive, string value)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А если разрешены только положительные, а передаем отрицательное?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants