Как мы можем убедиться, что все методы NUnit [Test] являются открытыми? - PullRequest
4 голосов
/ 18 октября 2019

Сегодня у нас был случай пропущенного / пропущенного теста:

Разработчик пропустил обнародование [Test], поэтому NUnit (v 3.9.0) не запустил его.

[TestFixture]
public class StackTests
{
    [Test]
    public void Fail1()
    {
        Assert.Fail("Will be run");
    }

    [Test]
    void Fail2()
    {
        Assert.Fail("will NOT be run - none the wiser");
    }
}

Когда разработчик заметил, что Fail2 не работает, он потратил еще 20 минут, пытаясь выяснить, почему он не был обнаружен, только до 100 (U + 1F926) когда мы заметили пропущенный public.

По моему опыту пропавший public в методах NUnit [Test] является повторяющимся камнем преткновения и его легко пропустить.

Есть лилюбой способ заставить NUnit или компилятор предупреждать о закрытых [Test] методах?

Или мы застряли со случайным ????

Ответы [ 2 ]

2 голосов
/ 18 октября 2019

Существует пакет анализаторов для NUnit. Это не похоже на есть анализатор для вашего случая, но есть открытый вопрос .

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


Другой вариант - этопринять стандарт кодирования, в котором всегда указывается модификатор доступа - поэтому void Fail2() будет запрещен, но public void Fail2() и private void Fail2() будут приняты. Вы можете применить это с помощью правила .editorconfig dotnet_style_require_accessibility_modifiers = always.

1 голос
/ 18 октября 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...