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


MSTEST0059. Не используйте атрибуты Parallelize и DoNotParallelize

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

Причина

Сборка содержит оба ParallelizeAttribute и DoNotParallelizeAttribute атрибуты.

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

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

using Microsoft.VisualStudio.TestTools.UnitTesting;

[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)] // Violation
[assembly: DoNotParallelize]

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

Удалите один из конфликтующих атрибутов на основе предполагаемой стратегии параллелизации.

Если требуется параллельное выполнение:

using Microsoft.VisualStudio.TestTools.UnitTesting;

[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)]

Если требуется последовательное выполнение:

using Microsoft.VisualStudio.TestTools.UnitTesting;

[assembly: DoNotParallelize]

Если вы хотите включить параллелизацию на уровне сборки, но отключить ее для определенных классов или методов, примените на Parallelize уровне сборки и DoNotParallelize на уровне класса или метода:

using Microsoft.VisualStudio.TestTools.UnitTesting;

[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)]

[DoNotParallelize]
[TestClass]
public class SequentialTests
{
    [TestMethod]
    public void Test1() { }
}

[TestClass]
public class ParallelTests
{
    [TestMethod]
    public void Test2() { }
    
    [DoNotParallelize]
    [TestMethod]
    public void Test3() { }
}

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

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

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

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

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

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

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

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