Las respuestas están desactualizadas. Si el error se ha solucionado, ¿cuándo y en qué versiones de qué ensamblaje?
Eso es correcto, que se fijó en VS2013 con el conjunto Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll, versión 10.0.0.0. Presente en el legado GAC, c: \ windows \ assembly, también tiene la versión 10.1.0.0.
hay una historia DLL Infierno aquí, la versión 10.1.0.0 fue la utilizada en VS2010. Tenía el error, no se buscaba correctamente para Double.NaN. Microsoft cometió un error, corrigieron 10.1.0.0 pero no cambiaron el número de versión. Así que cualquiera que instaló VS2010 después de instalar VS2013 va a salir herido, que va a sobrescribir el archivo DLL con la versión buggy.
Desenredar DLL Infierno nunca es tan simple, pero se desprende de la connect article y de la forma en que funciona en mi máquina que identifican el modo de fallo de la queja del cliente. Y proporcionó una solución, entregada en una actualización. No está claro que, después de julio de 2014. Ahora vamos a utilizar v10.0.0.0, el corredor de prueba MSTest.exe y los QTAgents tienen un archivo .config con un <bindingRedirect>
que redirige desde 10.1.0.0 a 10.0.0.0 (no es un error) Asegúrese de obtener la última actualización, actualmente 4. Mire en Ayuda + Acerca de si no está seguro de qué actualización ha instalado.
Para el registro, el código de uso adquiridos controles específicos para Double.NaN, que se ve así:
public static void AreEqual(double expected, double actual, double delta, string message, params object[] parameters)
{
if ((double.IsNaN(expected) || double.IsNaN(actual)) || double.IsNaN(delta))
{
string str = (string) FrameworkMessages.AreEqualDeltaFailMsg((message == null) ? string.Empty : ReplaceNulls(message), expected.ToString(CultureInfo.CurrentCulture.NumberFormat), actual.ToString(CultureInfo.CurrentCulture.NumberFormat), delta.ToString(CultureInfo.CurrentCulture.NumberFormat));
HandleFail("Assert.AreEqual", str, parameters);
}
if (Math.Abs((double) (expected - actual)) > delta)
{
string str2 = (string) FrameworkMessages.AreEqualDeltaFailMsg((message == null) ? string.Empty : ReplaceNulls(message), expected.ToString(CultureInfo.CurrentCulture.NumberFormat), actual.ToString(CultureInfo.CurrentCulture.NumberFormat), delta.ToString(CultureInfo.CurrentCulture.NumberFormat));
HandleFail("Assert.AreEqual", str2, parameters);
}
}
Microsoft entrada de errores: https://connect.microsoft.com/VisualStudio/feedback/details/ 762286/unit-test-with-assert-areequal-2-3-double-nan-0-1-passes – jbe
Y los idiotas lo cerraron como "por diseño". –
Interesante, porque MS se retractó y dice que ahora está arreglado: http://connect.microsoft.com/VisualStudio/feedback/details/780654/assert-equal-and-double-nan – Pat