MSTEST0073: preferir uma constante para a chave de recurso '[ResourceLock]'

Property Value
ID da regra MSTEST0073
Título Preferir uma constante para a chave de recurso '[ResourceLock]'
Categoria Uso
Correção é disruptiva ou não disruptiva Inquebrável
Habilitado por padrão Sim
Severidade padrão Informações
introduzido na versão 4.4.0 (versão prévia)
Há uma correção de código Não

Importante

ResourceLockAttribute é planejado para MSTest 4.4 e está disponível apenas em builds de visualização até que o MSTest 4.4.0 seja lançado.

Cause

Um [ResourceLock] atributo passa sua chave de recurso como um literal de cadeia de caracteres nua em vez de referenciar uma constante compartilhada.

Descrição da regra

[ResourceLock] corresponde aos testes pela igualdade exata da cadeia de caracteres que diferencia maiúsculas de minúsculas da chave de recurso. Um literal de cadeia de caracteres nua falha: um erro de digitação produz uma chave diferente, portanto, os testes conflitantes não são mais serializados e correm silenciosamente em vez de falhar com um erro de build. Fazer referência a uma constante compartilhada, como um WellKnownResources membro ou seu próprio const, torna o erro de compilação um erro de compilação e permite que o compilador imponha que cada teste em disputa no mesmo recurso use a mesma chave.

[ResourceLock("database")] // Violation: bare string literal.
[TestMethod]
public void ReadsSharedSchema() { }

Como corrigir violações

Faça referência a um WellKnownResources membro para o estado global do processo ou declare e referencie seu próprio const string.

private const string Database = "database";

[ResourceLock(Database)]
[TestMethod]
public void ReadsSharedSchema() { }

Quando suprimir avisos

É seguro suprimir esse aviso se você usar intencionalmente uma chave de recurso literal e tiver certeza de que nenhum outro teste no assembly precisa coordenar no mesmo recurso.

Suprimir um aviso

Se você quiser suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desabilitar a regra e, em seguida, habilitá-la novamente.

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

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

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

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também