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

Савельев Григорий #234

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

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.

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

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

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

@@ -5,28 +5,77 @@

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.

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

@@ -5,28 +5,77 @@

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.

Хорошо

using NUnit.Framework;

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

Choose a reason for hiding this comment

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

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

@@ -1,30 +1,55 @@
using FluentAssertions;
using System.Text.RegularExpressions;
using FluentAssertions;
using NUnit.Framework;

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.

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

using NUnit.Framework;

namespace HomeExercises
{
public class ObjectComparison
{
[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.

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

public class NumberValidatorTests
{
[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