Assert.AreEquivalent Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Sobrecargas
| Nombre | Description |
|---|---|
| AreEquivalent<T>(T, T, Boolean, String, String, String) |
Comprueba si dos gráficos de objetos son estructuralmente equivalentes (igualdad profunda) y produce una excepción si no lo son. |
| AreEquivalent<T>(T, T, String, String, String) |
Comprueba si dos gráficos de objetos son estructuralmente equivalentes (igualdad profunda) y produce una excepción si no lo son. |
AreEquivalent<T>(T, T, Boolean, String, String, String)
- Source:
- Assert.AreEquivalent.cs
Comprueba si dos gráficos de objetos son estructuralmente equivalentes (igualdad profunda) y produce una excepción si no lo son.
public static void AreEquivalent<T>(T? expected, T? actual, bool strict, string? message = "", string expectedExpression = "", string actualExpression = "");
static member AreEquivalent : 'T * 'T * bool * string * string * string -> unit
Public Shared Sub AreEquivalent(Of T) (expected As T, actual As T, strict As Boolean, Optional message As String = "", Optional expectedExpression As String = "", Optional actualExpression As String = "")
Parámetros de tipo
- T
Tipo de valores que se van a comparar.
Parámetros
- expected
- T
Primer valor que se va a comparar. Este es el valor que espera la prueba.
- actual
- T
Segundo valor que se va a comparar. Este es el valor generado por el código sometido a prueba.
- strict
- Boolean
Cuando true, se produce un error en la comparación si actual declara propiedades o campos públicos que no están presentes en el tipo en expectedtiempo de ejecución de o si hay claves de diccionario adicionales presentes en actual. Cuando false (valor predeterminado), se omiten miembros adicionales y claves de diccionario en actual .
Cuando los tipos en tiempo de ejecución de expected y actual son idénticos, esta marca no tiene ningún efecto en la comparación de miembros públicos, pero sigue rechazando claves de diccionario adicionales en actual al comparar diccionarios.
- message
- String
Mensaje que se va a incluir en la excepción cuando actual no es equivalente a expected. El mensaje se muestra en los resultados de la prueba.
- expectedExpression
- String
Expresión sintáctica de esperada según lo proporcionado por el compilador a través de la expresión de argumento llamador. Los usuarios no deben pasar un valor para este parámetro.
- actualExpression
- String
Expresión sintáctica de real según lo proporcionado por el compilador a través de la expresión de argumento llamador. Los usuarios no deben pasar un valor para este parámetro.
Excepciones
Se produce si expected y actual no son estructuralmente equivalentes.
Se aplica a
AreEquivalent<T>(T, T, String, String, String)
- Source:
- Assert.AreEquivalent.cs
Comprueba si dos gráficos de objetos son estructuralmente equivalentes (igualdad profunda) y produce una excepción si no lo son.
public static void AreEquivalent<T>(T? expected, T? actual, string? message = "", string expectedExpression = "", string actualExpression = "");
static member AreEquivalent : 'T * 'T * string * string * string -> unit
Public Shared Sub AreEquivalent(Of T) (expected As T, actual As T, Optional message As String = "", Optional expectedExpression As String = "", Optional actualExpression As String = "")
Parámetros de tipo
- T
Tipo de valores que se van a comparar.
Parámetros
- expected
- T
Primer valor que se va a comparar. Este es el valor que espera la prueba.
- actual
- T
Segundo valor que se va a comparar. Este es el valor generado por el código sometido a prueba.
- message
- String
Mensaje que se va a incluir en la excepción cuando actual no es equivalente a expected. El mensaje se muestra en los resultados de la prueba.
- expectedExpression
- String
Expresión sintáctica de esperada según lo proporcionado por el compilador a través de la expresión de argumento llamador. Los usuarios no deben pasar un valor para este parámetro.
- actualExpression
- String
Expresión sintáctica de real según lo proporcionado por el compilador a través de la expresión de argumento llamador. Los usuarios no deben pasar un valor para este parámetro.
Excepciones
Se produce si expected y actual no son estructuralmente equivalentes.
Comentarios
Esta aserción realiza una comparación estructural profunda y sensible al orden de dos gráficos de objetos. Difiere de AreEquivalent(ICollection, ICollection), que comprueba solo la equivalencia de colección de nivel superior sin tener en cuenta el orden de los elementos.
Las reglas de comparación son:
- Los valores iguales de referencia (incluidos ambos
null) se consideran equivalentes. - Los tipos de tipo primitivo (numéricos, Boolean, , , String, enumeraciones, DateTime, TimeSpanDateTimeOffsetGuidUri, Type, ) Versionse comparan con Equals(Object). Char En las plataformas de destino que las envían,
DateOnly,TimeOnlyHalf, ,Int128yUInt128también se tratan como primitivas. - Si el tipo estático (en tiempo de compilación) de un valor se implementa IEquatable<T> para sí mismo, Equals(T) se usa y la recursividad se detiene en ese momento. Las invalidaciones sin formato Equals(Object) se omiten: el comparador siempre se repite en miembros para esos.
- Los diccionarios (IDictionary, IDictionary<TKey, TValue>, o IReadOnlyDictionary<TKey,TValue>) se comparan mediante el conjunto de claves, con valores comparados de forma recursiva. Las búsquedas se enrutan a través del diccionario de origen para que se conserven sus IEqualityComparer<T> claves.
- Otros enumerables (excepto String) se comparan elemento por elemento en el orden de iteración. La comparación distingue orden; si el orden es irrelevante, use AreEquivalent(ICollection, ICollection) en la propia colección.
- Otros tipos de referencia se comparan recursando en todas las propiedades de instancia pública (con un captador público y sin parámetros de índice) y campos de instancia pública. Se omiten los miembros estáticos, no públicos e indizado.
- Se realiza un seguimiento de los ciclos de referencia y se recorren como máximo una vez por par (esperado, real). El mismo mecanismo aplica la topología de grafos: si la misma referencia en un lado está emparejada con referencias diferentes en el otro lado, se produce un error en la aserción.
- Si un captador de miembros definido por Equals(T)el usuario o el acceso al diccionario (
TryGetValue,ContainsKeyo enumeración) se produce mientras se evalúa, se produce un error en la aserción con un mensaje que describe el tipo de excepción y el mensaje. - La comparación se detiene después de una profundidad de recursividad limitada para evitar StackOverflowException gráficos de objetos poco profundos e informa de esa condición como un error de aserción.