Parece que la mayoría de los marcos primeros utilizan espera antes real (por alguna razón desconocida, sin embargo, tirada de dados, tal vez?). Sin embargo, con el desarrollo de lenguajes de programación, y aumentó la fluidez del código, esa orden se revirtió. La mayoría de las interfaces fluidas generalmente intentan imitar el lenguaje natural y los marcos de prueba de unidades no son diferentes.
En la afirmación, queremos asegurar que algún objeto coincide con algunas condiciones. Esta es la forma de lenguaje natural, como si tuviera que explicar su código de prueba que probablemente diría
"En esta prueba, me aseguro de que el valor calculado es igual a 5"
vez de
"En esta prueba, me aseguro de que 5 sea igual al valor calculado".
La diferencia puede no ser enorme, pero vamos a seguir adelante. Considere esto:
Assert.That(Roses, Are(Red));
Sonidos acerca de la derecha. Ahora:
Assert.That(Red, Are(Roses));
Hm ..? Probablemente no se sorprenda si alguien le dijera que las rosas son rojas. Por otro lado, rojo son rosas, plantea preguntas sospechosas. Yoda, alguien?
Yoda de hacer un punto importante - Orden inverso obliga a think.
Se hace aún más poco natural cuando sus afirmaciones son más complejos:
Assert.That(Forest, Has.MoreThan(15, Trees));
¿Cómo le revertir ese? Más de 15 árboles están siendo ocupados por el bosque?
Esta afirmación (fluidez como un factor determinante para la modificación) se refleja de alguna manera en el cambio que ha pasado por NUnit - originalmente (Assert.AreEqual
) se utiliza espera antes real (estilo antiguo). Las extensiones fluidas (o para usar la terminología de NUnit, basada en restricciones - Assert.That
) revirtieron ese orden.
¿Ha mirado los mensajes de error predeterminados que se producen cuando falla una prueba? Es por eso. ¿O preguntas por qué los mensajes están escritos de esa manera? ¿Estás preguntando sobre el "estándar" C que se preocupa por 'if (23 = a)' vs. 'if (a = 23)'? ¿Es eso lo que preguntas? –
Quizás solo por conveniencia, la expresión de afirmación puede ser comparativamente compleja, por lo que poner el resultado esperado primero lo hace fácil de encontrar. –
@ S.Lott: Sé por qué tengo que pasarlos en ese orden, quiero saber por qué la mayoría de las interfaces de prueba unitaria están escritas de esa manera. –