MSTEST0057. Распространение исходных сведений в атрибутах пользовательского метода тестирования

Недвижимость Ценность
Идентификатор правила MSTEST0057
Заголовок Распространение исходных сведений в атрибутах пользовательского метода тестирования
Категория Usage
Исправление является разрушающим или неразрушающим Non-breaking
Включен по умолчанию Да
Серьезность по умолчанию Предупреждение
представлено в версии 4.0.0
Существует ли исправление кода Да

Причина

Пользовательский TestMethodAttribute класс не распространяет сведения вызывающего объекта в конструктор базового класса.

Описание правила

При создании настраиваемых атрибутов тестовых методов, производных от TestMethodAttribute, следует распространять исходную информацию с помощью атрибутов информации о вызывающем. Это позволяет MSTest правильно отслеживать исходный файл и номер строки для методов тестирования, улучшать диагностику, отчеты о результатах теста и поведение обозревателя тестов.

public class MyTestMethodAttribute : TestMethodAttribute
{
    public MyTestMethodAttribute() // Violation
        : base()
    {
    }
}

Устранение нарушений

Добавьте CallerFilePath и CallerLineNumber параметры в конструктор и передайте их в базовый класс.

using System.Runtime.CompilerServices;

public class MyTestMethodAttribute : TestMethodAttribute
{
    public MyTestMethodAttribute(
        [CallerFilePath] string callerFilePath = "", 
        [CallerLineNumber] int callerLineNumber = -1)
        : base(callerFilePath, callerLineNumber)
    {
    }
}

Когда следует подавлять предупреждения

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

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

#pragma warning disable MSTEST0057
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0057

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0057.severity = none

Дополнительные сведения см. в разделе "Подавление предупреждений анализа кода".