Skip to content

Conversation

@luvairo-m
Copy link

@elis_shtol

Copy link

@elizShtol elizShtol left a comment

Choose a reason for hiding this comment

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

Реформатируй, пожалуйста, код перед отправкой на проверку
Первый раз - не страшно, но наставник на следующих проверках имеет право не проверять твое решение, пока код не отреформачен

Здорово, что поделил на коммиты, молодец)

Со мной можно спорить по комментам ревью, не стесняйся, если есть что сказать


namespace HomeExercises
{
[TestFixture]

Choose a reason for hiding this comment

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

Можешь объяснить какую роль выполняет этот атрибут? Почему он нужен в этой ситуации?

Copy link
Author

Choose a reason for hiding this comment

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

Этим атрибутом помечается класс, содержащий тесты.
Насколько я знаю, ему можно передавать параметры, которые прокинуться в конструктор класса.
Таким образом можно автоматически создавать несколько классов тестов с разными настройками (действие похоже на атрибут TestCase для метода).
Использование этого атрибута не является обязательным, но я решил его добавить, чтобы подчеркнуть то, что NumberValidatorTests содержит тесты. Хотя это понятно и из названия класса :)

Choose a reason for hiding this comment

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

я думаю, что нет смысла навешивать этот атрибут, когда нет прямой необходимости (например, создания тестового класса с разными параметрами или параллельный запуск тестов на уровне фикстуры), поэтому я бы убрала) Но в целом это не критично

namespace HomeExercises
{
[TestFixture]
public class NumberValidatorTests

Choose a reason for hiding this comment

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

Для более простой навигации по проекту лучше разносить классы по отдельным файлам и называть их соответствующе + обычно тесты выносят в отдельный проект, чтобы не выпускать их вместе с основным кодом на рабочую площадку (относится к обеим частям задания)

Copy link
Author

Choose a reason for hiding this comment

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

Хорошо

{
[Test]
[Description("Проверка текущего царя")]
[Description("Проверка текущего царя. Информативная реализация")]

Choose a reason for hiding this comment

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

Description не понадобится, если дать тесту достаточно понятное название


namespace HomeExercises
{
public class ObjectComparison

Choose a reason for hiding this comment

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

В названии лучше отразить, что это класс с тестами

[Test]
[Description("Проверка текущего царя")]
[Description("Проверка текущего царя. Информативная реализация")]
[Category("ToRefactor")]

Choose a reason for hiding this comment

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

Кажется, что эта категория не нужна)

{
[Test]
public void Test()
[Category("NumberValidator.Constructor; Exception")]

Choose a reason for hiding this comment

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

про категорию аналогично другому комменту

Copy link
Author

Choose a reason for hiding this comment

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

Убрал)

[TestCase(5, -5, TestName = "Scale < 0")]
[TestCase(5, 5, TestName = "Precision = Scale")]
[TestCase(5, 10, TestName = "Precision < Scale")]
public void Constructor_With_IncorrectArguments_Should_ThrowException(int precision, int scale)

Choose a reason for hiding this comment

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

Я бы все-таки советовала именование тестов в формате [Метод (или конструктор)]should[что-то]when[условие]

Assert.IsFalse(new NumberValidator(17, 2, true).IsValidNumber("0.000"));
Assert.IsFalse(new NumberValidator(3, 2, true).IsValidNumber("-1.23"));
Assert.IsFalse(new NumberValidator(3, 2, true).IsValidNumber("a.sd"));
var action = new Action(() => new NumberValidator(precision, scale));

Choose a reason for hiding this comment

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

это на самом деле Func а не Action

имхо (можно не исправлять) я бы написала Func<NumberValidator> action = () => new NumberValidator(precision, scale);

}

[Category("NumberValidator.Constructor; No exception")]
[TestCase(10, 5, false, TestName = "Correct parameters")]

Choose a reason for hiding this comment

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

А какие параметры будут корректными? Мне понравился формат, в котором ты описал некорректные в названиях, тут можно сделать так же)

[TestCase(10, 5, true, "++3.45", TestName = "Two signs")]
[TestCase(10, 5, true, "2,,66", TestName = "Two separators")]
[TestCase(10, 5, true, "", TestName = "Empty string as number")]
public void IsValid_ShouldReturn_False_When_IncorrectValue(int precision, int scale,

Choose a reason for hiding this comment

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

Какие еще граничные ситуации проверяют при таком тестировании обычно? (есть еще как минимум 1 очень простой распространенный тесткейс)

…отдельным папкам.

Потребовалась реорганизация файлов задания.
Удалил тестовый проект, который создал для проверки новой структуры.
Это инфраструктурный этап рефакторинга.
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