MSTEST0038: não use 'Assert.AreSame' ou 'Assert.AreNotSame' com tipos de valor
Propriedade | Valor |
---|---|
ID da regra | MSTEST0038 |
Título | Não use 'Assert.AreSame' ou 'Assert.AreNotSame' com tipos de valor |
Categoria | Uso |
Correção interruptiva ou sem interrupção | Sem interrupção |
Habilitado por padrão | Sim |
Gravidade padrão | Aviso |
Introduzido na versão | 3.8.0 |
Há uma correção de código | Sim |
Causa
O uso de Assert.AreSame ou Assert.AreNotSame com um ou ambos argumentos como tipo de valor.
Descrição da regra
Assert.AreSame e Assert.AreNotSame funcionam comparando a referência dos expected
/notExpected
argumentos reais e fornecidos via ReferenceEquals
. Portanto, quando você passa um tipo de valor, ele é demarcado.
Se estiver usando AreSame
, a declaração sempre falhará. Se estiver usando AreNotSame
, a declaração sempre será aprovada.
Para AreSame
, o único caso em que a afirmação é aprovada é se ambos os argumentos forem tipos de valores anuláveis cujos valores são ambos nulos. Nesse caso, fica mais claro ter duas chamadas Assert.IsNull
separadas.
Como corrigir violações
Use Assert.AreEqual
e Assert.AreNotEqual
em vez de Assert.AreSame
e Assert.AreNotSame
.
Se usar Assert.AreSame
e ambos os argumentos forem tipos de valores anuláveis cujos valores são esperados como nulos, dois Assert.IsNull
separadas poderão ser mais adequadas do que AreEqual
, dependendo da intenção do teste.
Quando suprimir avisos
Não suprima um aviso nessa regra. Ignorar essa regra resultará em uma afirmação que sempre falhará ou sempre será aprovada.