-
Notifications
You must be signed in to change notification settings - Fork 282
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
Савельев Григорий #234
base: master
Are you sure you want to change the base?
Савельев Григорий #234
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Реформатируй, пожалуйста, код перед отправкой на проверку
Первый раз - не страшно, но наставник на следующих проверках имеет право не проверять твое решение, пока код не отреформачен
Здорово, что поделил на коммиты, молодец)
Со мной можно спорить по комментам ревью, не стесняйся, если есть что сказать
@@ -5,28 +5,77 @@ | |||
|
|||
namespace HomeExercises | |||
{ | |||
[TestFixture] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Можешь объяснить какую роль выполняет этот атрибут? Почему он нужен в этой ситуации?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Этим атрибутом помечается класс, содержащий тесты.
Насколько я знаю, ему можно передавать параметры, которые прокинуться в конструктор класса.
Таким образом можно автоматически создавать несколько классов тестов с разными настройками (действие похоже на атрибут TestCase для метода).
Использование этого атрибута не является обязательным, но я решил его добавить, чтобы подчеркнуть то, что NumberValidatorTests содержит тесты. Хотя это понятно и из названия класса :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
я думаю, что нет смысла навешивать этот атрибут, когда нет прямой необходимости (например, создания тестового класса с разными параметрами или параллельный запуск тестов на уровне фикстуры), поэтому я бы убрала) Но в целом это не критично
@@ -5,28 +5,77 @@ | |||
|
|||
namespace HomeExercises | |||
{ | |||
[TestFixture] | |||
public class NumberValidatorTests |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Для более простой навигации по проекту лучше разносить классы по отдельным файлам и называть их соответствующе + обычно тесты выносят в отдельный проект, чтобы не выпускать их вместе с основным кодом на рабочую площадку (относится к обеим частям задания)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Хорошо
cs/HomeExercises/ObjectComparison.cs
Outdated
using NUnit.Framework; | ||
|
||
namespace HomeExercises | ||
{ | ||
public class ObjectComparison | ||
{ | ||
[Test] | ||
[Description("Проверка текущего царя")] | ||
[Description("Проверка текущего царя. Информативная реализация")] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Description не понадобится, если дать тесту достаточно понятное название
cs/HomeExercises/ObjectComparison.cs
Outdated
@@ -1,30 +1,55 @@ | |||
using FluentAssertions; | |||
using System.Text.RegularExpressions; | |||
using FluentAssertions; | |||
using NUnit.Framework; | |||
|
|||
namespace HomeExercises | |||
{ | |||
public class ObjectComparison |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В названии лучше отразить, что это класс с тестами
cs/HomeExercises/ObjectComparison.cs
Outdated
using NUnit.Framework; | ||
|
||
namespace HomeExercises | ||
{ | ||
public class ObjectComparison | ||
{ | ||
[Test] | ||
[Description("Проверка текущего царя")] | ||
[Description("Проверка текущего царя. Информативная реализация")] | ||
[Category("ToRefactor")] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Кажется, что эта категория не нужна)
public class NumberValidatorTests | ||
{ | ||
[Test] | ||
public void Test() | ||
[Category("NumberValidator.Constructor; Exception")] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
про категорию аналогично другому комменту
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
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)); |
There was a problem hiding this comment.
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")] |
There was a problem hiding this comment.
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, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Какие еще граничные ситуации проверяют при таком тестировании обычно? (есть еще как минимум 1 очень простой распространенный тесткейс)
…отдельным папкам. Потребовалась реорганизация файлов задания. Удалил тестовый проект, который создал для проверки новой структуры. Это инфраструктурный этап рефакторинга.
@elis_shtol