visual teorico pruebas preguntas online net mvc examen evaluaciones espaƱol conocimiento certificacion c# unit-testing nunit

teorico - preguntas examen certificacion c#



incapaz de leer las aplicaciones cuando la prueba de la unidad (3)

Tengo la aplicación de consola C #. Una de sus funciones es la lectura de valor de appconfig y hacer algún trabajo.

string host = ConfigurationManager.AppSettings["Host"]

Así que escribí la prueba NUNIT para mi aplicación de consola. Proyecto de prueba de unidad fue creado utilizando la biblioteca de clases.

Pero mi prueba de unidad ahora falla. Porque no está leyendo la configuración de mi aplicación (indica que no hay configuración de la aplicación). Cuál es la razón para esto.
Cuando ejecuto mi aplicación de consola, está leyendo la configuración de la aplicación correctamente.


Debe tener un app.config creado para su proyecto de prueba de unidad. No se consultará la aplicación .config de su aplicación de consola cuando esté ejecutando las pruebas unitarias.


Otra solución puede ser tan simple como copiar todos los archivos json de configuración de la aplicación en la carpeta de compilación de su proyecto de prueba de unidad si solo usa los mismos archivos. A veces, en Rider, simplemente no se copió, lo hice manualmente.


Si bien puede definir la configuración de la aplicación en otro archivo de configuración para su proyecto de prueba de unidad, la prueba de unidad a las interfaces utilizando la inyección de dependencia puede ayudar a desglosar las áreas que las pruebas de unidad cubrirán en porciones más manejables.

Para que puedas tener tu interfaz de configuración como:

public interface IConfiguration { public string Host { get; set; } }

su clase a probar aceptaría una clase de configuración de la IC como parámetro (generalmente a su constructor) como esto:

public class MyClass { IConfiguration _config; public MyClass(IConfiguration config) { _config = config; } public void MyMethodToTest() { } }

Luego, su prueba puede usar la interfaz para pasar la configuración en lugar de depender de un archivo de configuración externo que pueda cambiar potencialmente y afectar su prueba de unidad:

[Test] public void Testing_MyMethodToTest() { // arrange var config = new Configuration { Host = "My Test Host" }; // act new MyClass(config).MyMethodToTest(); // Add assertion for unit test }

Y su implementación real creará su clase de configuración, la cargará con los valores de los ajustes y la pasará a su implementación