Estoy tratando de entrar en pruebas unitarias con NUnit. Por el momento, estoy escribiendo una prueba simple para acostumbrarme a la sintaxis y la forma de probar la unidad. Pero no estoy seguro si lo estoy haciendo bien con la siguiente prueba:¿Es una buena forma de prueba unitaria utilizar otra función probada para hacer los preparativos para la prueba real?
La clase en prueba contiene una lista de cadenas que contienen nombres de fruta, donde se pueden agregar nuevos nombres de frutas a través del class_under_test.addNewFruit(...)
. Entonces, para probar la funcionalidad de addNewFruit(...)
, primero uso el método para agregar una nueva cadena a la lista (por ejemplo, "Piña") y, en el siguiente paso, verifico si la lista contiene esta nueva cadena.
No estoy seguro si esta es una buena manera de probar la funcionalidad del método, porque confío en la respuesta de otra función (que ya he probado en una prueba de unidad anterior).
¿Es esta la manera de probar esta función, o hay mejores soluciones?
public void addNewFruit_validNewFruitName_ReturnsFalse()
{
//arrange
string newFruit = "Pineapple";
//act
class_under_test.addNewFruit(newFruit);
bool result = class_under_test.isInFruitList(newFruit);
//assert
Assert.That(!result);
}
Absolutamente ... si todas las combinaciones de pruebas son InFruitsList son buenas, y ellas son las autoras de ese código, entonces debería ser confiable para otras pruebas ... Así como "confiamos" en C# y NUnit ... – DRapp
Está bien. Siempre debe encontrar el equilibrio entre escribir muy pocas/pruebas demasiado generales y sumergirse en la prueba de si 'int a = 5' en realidad asigna valor. Siempre es más sensato suponer que CLR, el código de terceros y el código probado funciona, que volverse paranoico y probar todo lo que se mueve. –
¡Gracias a los dos! Me siento mucho más seguro ahora, sabiendo que se "permite" confiar en mis propias pruebas. – DIF