Бөлісу құралы:


Правила подавления MSTest

Правила подавления автоматически подавляют диагностику из других анализаторов (таких как Roslyn или анализаторы потоков Visual Studio), которые не применяются в контексте тестов MSTest.

Правила в этой категории

Идентификатор правила Название Подавляет
MSTEST0027 Убрать асинхронный суффикс у тестовых методов. VSTHRD200
MSTEST0028 Подавляйте асинхронный суффикс для методов тестовых фикстур. VSTHRD200
MSTEST0033 Запретить ссылку, не допускаемую значение NULL, не инициализированную. CS8618

Как работают правила подавления

Эти правила не создают собственную диагностику. Вместо этого подавляются предупреждения от других анализаторов, которые иначе срабатывали бы некорректно в тестовом коде.

VSTHRD200. Используйте суффикс 'Async' для асинхронных методов

Подавлено: MSTEST0027, MSTEST0028

Почему подавлять: анализатор потоков Visual Studio (VSTHRD200) рекомендует, чтобы асинхронные методы должны иметь суффикс 'Async'. Однако методы тестирования и методы тестовых приспособлений обнаруживаются MSTest с использованием атрибутов, а не соглашений об именовании. Добавление суффиксов Async в имена методов тестирования (например, TestLoginAsync) не предоставляет значения и может сделать имена тестов менее читаемыми.

Пример:

[TestMethod]
public async Task TestLogin() // VSTHRD200 would warn without suppression
{
    await LoginAsync();
    // ...
}

CS8618: Ненулевой ссылочный тип не инициализирован

Подавляется: MSTEST0033

Зачем подавлять: при использовании ссылочных типов, допускающих значение NULL, компилятор предупреждает о ненуляемых свойствах, которые не инициализированы в конструкторах. Однако MSTest автоматически инициализирует TestContext свойство перед выполнением любых методов тестирования, поэтому предупреждение не применяется.

Пример:

[TestClass]
public class MyTests
{
    public TestContext TestContext { get; set; } = null!; // CS8618 would warn without suppression
    
    [TestMethod]
    public void TestSomething()
    {
        // TestContext is guaranteed to be non-null here
        TestContext.WriteLine("Test output");
    }
}

Отключение правил подавления

Если вы предпочитаете видеть эти предупреждения, отключите правила подавления в следующих .editorconfigпараметрах:

[*.cs]
dotnet_diagnostic.MSTEST0027.severity = none
dotnet_diagnostic.MSTEST0028.severity = none
dotnet_diagnostic.MSTEST0033.severity = none