Writing a Simple Unit Test (Unit Testing Part 2)

Writing a Simple Unit Test (Unit Testing Part 2)

En este video, aprenderá cómo escribir una prueba unitaria simple, comencemos, hola a todos, mi nombre es michaela caron, soy un desarrollador de iOS de tiempo completo y un trabajador independiente, comencemos a aprender pruebas unitarias, lo primero que vamos a hacer es crear un nuevo proyecto xcode así que vayamos a archivar nuevo proyecto y luego vamos a seleccionar ios y luego aplicación y vamos a llamar a esto um unit testing cwc unit testing ponga un equipo si tiene uno este es el identificador de su organización como siempre y nosotros Entonces, no importa si usamos la interfaz de usuario rápida o el guión gráfico para este proyecto porque las pruebas unitarias consisten en probar cómo funciona su código, no sobre la interfaz de usuario, por lo que la interfaz de usuario y de eso se trata la interfaz de usuario rápida y el guión gráfico, por lo que en realidad no lo hace. No importa en cuál hagamos clic , usaremos la interfaz de usuario rápida para este proyecto, manténgalo rápido y luego, si crea un proyecto completamente nuevo , incluiremos pruebas desde el principio, así que aquí, cuando hagamos clic en Siguiente, verá que crear el objetivo de prueba automáticamente a diferencia de cuando tenemos un nuevo proyecto o cuando tenemos un proyecto existente, tenemos que agregarlos de una manera diferente para este ejemplo, solo haremos un nuevo proyecto en la próxima lección , usaremos un proyecto que no tiene pruebas unitarias que ya se hayan creado , sí, podemos poner eso, está bien, crearemos nuestro nuevo proyecto en el escritorio, haga clic en crear , aquí está nuestro nuevo proyecto que acabamos de crear, sigamos adelante y ejecutemos el proyecto, así que haré clic en comando r y ejecutaremos y simplemente compilaremos el simulador, así que solo tengo un iPhone 13. Está bien, entonces ejecutamos el proyecto y vemos hola mundo solo texto en la pantalla como deberíamos, así que sigamos adelante y deténgalo por ahora y luego vemos aquí que tenemos dos carpetas diferentes, por lo que tenemos co2 cwc unit testing testing y luego ui testing y luego cwc unit testing es el nombre del proyecto, por lo que estas carpetas tests y ui tests se agregaron automáticamente cuando fuimos y verificamos el complemento incluye parte de pruebas, agrega automáticamente ambas pruebas unitarias y la prueba de interfaz de usuario, que no es algo por lo que vamos a pasar, pero agrega automáticamente ambos para nosotros , así que minimicemos eso porque no vamos a mirarlo para este ejemplo y solo abra este archivo para que veamos la primera unidad cwc prueba de prueba en un caso de prueba heredado de xc, por lo que esta es la clase que se usa para pruebas unitarias para desarrollo similar a ios cuando entramos aquí, lo primero que vemos es importar prueba xc porque eso es lo que se usa para todas las pruebas unitarias en ios ese es el biblioteca que necesitamos y vemos esto en la prueba de unidad cwc de importación comprobable, así que este es nuestro proyecto, así que cuando miramos nuestro proyecto como caso de prueba o lo sentimos, nuestro objetivo del proyecto se llama prueba de unidad cwc, por lo que tenemos que incluir todos nuestros el código del proyecto aquí porque en realidad no es parte de nuestro objetivo de prueba, por lo que si vamos a la configuración del proyecto, nuestros diferentes objetivos tienen nuestro objetivo de aplicación real, así que es a lo que está acostumbrado cuando crea aplicaciones iOS, tenemos un objetivo de prueba y un objetivo de prueba de interfaz de usuario para en realidad, están completamente separados de nuestra aplicación y puede ver que nos dice cómo es nuestro host real, qué es nuestra aplicación real, así que piense en ello como si estuvieran en ámbitos completamente diferentes , por eso tenemos que importar nuestro propio proyecto en nuestras pruebas para que obtenga el código de la placa de spoiler y este es solo un ejemplo de cómo configurar nuestro proyecto cómo desmantelarlo un ejemplo de cómo se vería una prueba que está completamente en blanco y solo tiene comentarios y luego prueba el rendimiento entonces para este ejemplo, no vamos a pasar por pruebas de rendimiento, así que vamos a seguir adelante y eliminar eso. Veamos estos métodos de configuración y desmontaje para que le digan lo que hacen, así que ponemos el código de configuración aquí, pero ¿qué es? el código de configuración es el código que queremos ejecutar antes de cada prueba de unidad individual y luego desmontar es el código que queremos ejecutar después de cada prueba de unidad individual porque con las pruebas de unidad desea que su entorno sea siempre exactamente el mismo para cada prueba individual que usted tu Entonces, estos dos métodos se llaman para cada tipo diferente de prueba que tenemos, así que si vamos al ejemplo de prueba de función dos o uno, dos oops y no tiene que lanzar pero puede y hacemos esto y si hacemos clic en esto pequeño diamante aquí, esto ejecutará todas las pruebas unitarias para este proyecto, pero si también vamos a la izquierda aquí, el botón uno dos tres cuatro cinco seis seis um de la izquierda es el navegador de prueba, es el pequeño diamante , expandimos esto y podemos ver nuestra prueba de interfaz de usuario y nuestra prueba unitaria, así que colapsemos esa por ahora y pueden ver que tenemos dos pruebas en esta clase y eso es lo que es esta, vemos el ejemplo de prueba y el ejemplo de prueba dos y también pueden ver tienen pequeños diamantes junto a ellos, así es como realizamos las pruebas, podríamos ejecutarlo haciendo clic en el botón de reproducción aquí, podríamos hacer clic en el botón de reproducción justo allí o incluso simplemente hacer clic en este botón de reproducción y ejecutará toda la clase o si también vaya a como producto, sí, si va a producto y hace clic en prueba, que es el ejemplo le o cuál es el comando de acceso directo u que ejecutará todo nuestro conjunto de pruebas, que incluiría nuestras pruebas uh ui, por lo que no queremos hacer eso en este momento porque no queremos que se ejecuten , podríamos simplemente ir en realidad, eso es lo que voy a hacer, vamos a comentarlos ahora mismo para que pueda ver que hay algunas cosas adicionales que las pruebas de interfaz de usuario tienen que una prueba unitaria no comenta y vamos a este comentario. Cierra eso, cierra ese y está bien, así que ahora , si volvemos a nuestro objetivo de prueba, estos existen, pero puedes ver que ahora no tienen ninguna prueba en ellos porque acabamos de comentar, los comentamos todos, así que ahora, cuando hagamos clic en Comandarte puedo ver ahora que está probando, así que estamos a punto de ejecutar nuestras pruebas, podemos abrir la consola en la parte inferior y en mi computadora esperar a que se ejecuten aquí, vamos, la prueba tuvo éxito, así que vio esta ventana emergente que dijo que la prueba tuvo éxito y puede vea en la consola que dice que todas las pruebas comenzaron y luego pasaré la prueba, no tenemos aserciones o n estos y puede ver que pasaron porque tenemos marcas de verificación junto a nuestras dos pruebas ahora y podemos ver a la izquierda que todas nuestras pruebas han pasado pero pasan porque no estamos haciendo nada, así que simplemente pasaron como automáticamente vamos regrese y observe la configuración y el desmontaje porque también hay un par de métodos configurados, ¿va a hacerlo allí? Vamos, así que si escribe configuración y simplemente presiona Intro , a veces obtendrá esta función de clase de anulación y eso es no es lo que queremos, solo queremos la configuración de la función de anulación porque en realidad hay un par de métodos de configuración, hay una configuración y luego hay una configuración de configuración con aire y luego también hay una configuración asíncrona para que use la que necesite dependiendo de qué prueba está ejecutándose si su código hace algo de forma asíncrona o si necesita configurar algo de forma asíncrona, pero lo que vamos a hacer es simplemente usar la configuración normal sin una configuración similar con error y puede ver que este no arroja pero este lo hace, por lo que podría hazlo si tu el código de configuración básicamente falló, podría lanzar el aire en este punto y como si su prueba no se ejecutara o podría hacer que se ejecutaran si quisiera , pero solo vamos a usar la configuración y el desmontaje y tengo que deletrearlo bien terror Oh, Dios mío , desmonte y asegúrese de ver que hay dos de ellos, asegúrese de hacer clic en el que dice que brinda la oportunidad de realizar la limpieza después de cada método de prueba en un caso de prueba, en lugar del que dice realizar la limpieza después de que un caso de prueba finaliza no después de cada método de prueba, lo que significaría que el método de prueba es uno de estos, como cada prueba individual es un método de prueba, una función en lugar de todo el caso de prueba es su clase, lo que significa xc caso de prueba, así que sigamos adelante y póngalos allí y tengamos nuestro app haga algo porque en este momento no hace nada, pero no vamos a hacer como si realmente estuvieras usando una interfaz de usuario rápida, solo vamos a hacer un programa de calculadora matemática simple, que es lo que te muestran muchos tutoriales, pero ellos no en realidad no va más e más a fondo que eso a veces, pero haremos esto para que comprenda los conceptos básicos de las pruebas unitarias y luego vea cómo se ve realmente en un proyecto real, así que primero creemos un nuevo archivo, así que hice clic en la carpeta y luego en el comando n para un nuevo archivo y hagamos un archivo rápido y asegurémonos de que estamos en nuestra prueba, lo siento, estamos en nuestro proyecto justo aquí cuando hacemos esto , llamemos a esto matemática simple y presione enter y puede ver el objetivo que se seleccionó que yo ya hecho para desaparecer es matemática simple, lo siento, es la prueba unitaria de cwc del proyecto, por lo que no estamos en nuestro objetivo de prueba en este momento, está bien, creemos una nueva clase y la llamaremos matemática simple y luego lo que esto va a hacer es bastante simple nosotros solo tendrá una función llamada agregar 10 y todo lo que hará es aceptar un parámetro llamado número que es un número entero y luego lo que vamos a devolver es número más 10 y eso es todo y también hagamos otro aquí llamado funk llamémoslo b-cuadrado y devolveremos número por n número porque así es como elevas un número al cuadrado y luego aquí también devolveremos un número entero, por lo que ambos devolverán un número entero, el primero todo lo que hace es agregar 10 a cualquier número que pasemos a la función y luego este hace el lo mismo, pero en lugar de sumar 10 , simplemente multiplicamos el número por sí mismo, así que lo elevamos al cuadrado y luego devolvemos el número y luego lo hice porque realmente no importa dónde si tenemos un guión bajo delante de el número que verá en el sitio de la llamada, la palabra número no necesita estar allí, así que cuando vayamos a probar esto, ¿qué queremos hacer? Queremos probar nuestra clase llamada matemática simple, así que hagamos una variable para matemática simple y es del tipo matemática simple y queremos forzarlo a desenvolverlo, de lo contrario, nos hará crear como un inicializador porque esta es una clase, pero no es así como queremos hacer esto, queremos inicializarlo aquí, no en minúsculas . s necesitamos una mayúscula s queremos inicializarlo aquí cuando nosotros uh w uando comenzamos cada nueva prueba, eso sucederá aquí y luego el desmontaje cuando finalicemos cada prueba , haremos matemáticas simples igual a cero porque lo que esto hace será igual a cero antes o después de este ejemplo de prueba y luego establecerá que la matemática simple es igual a una nueva instancia cuando ejecutamos la segunda prueba y luego la anulará después de ejecutar la segunda prueba, por lo que ambos casos de prueba tendrán exactamente el mismo entorno cuando los ejecutemos, pero Definitivamente vamos a borrar esto y cambiarles el nombre para que no probemos er whoops funk eso fue extraño funk agregar 10 funciona pero no podemos simplemente ejecutar una prueba como esta para que veas mi xcode cargas así que acabo de construir el proyecto para hacer que mi xcode funcione como se puede ver cuando intentamos simplemente crear una función para hacer una prueba unitaria no muestra nada con solo una función normal los nombres de las funciones para las pruebas unitarias deben comenzar con la palabra prueba así que vamos cambie esto para probar agregue 10 trabajos y ahora aparece en nuestro navegador y tenemos esto pequeño diamante al lado, así que cuando escribes pruebas unitarias, normalmente sigues una convención llamada dado cuando entonces o qué es actuar afirmar organizar actuar afirmar así que hagamos dado cuando sí entonces o también se llama no es un rango lo siento entonces esto significa bastante exactamente lo mismo, son solo nombres diferentes para cómo hacemos esto, así que lo que queremos hacer lo que queremos hacer dado sería como dejar responder o llamarlo esperado es de tipo entero y solo por derecho ahora configúrelo igual a cero , así que queremos hacerlo cuando lo esperado debería ser igual a no sumar el tiempo, tenemos que hacer un punto matemático simple, sume 10 y démosle un número muy fácil de 10 para que sepamos con certeza cuándo suma 10 más 10 es igual a 20. y eso tiene que ser una variable, no una constante, entonces lo que es afirmar significa afirmar es decir hagamos algo o afirmar es decir qué esperamos que suceda, así que queremos xct afirmar , digamos este que esperaba es igual a 20. y esto significa que debería ser cierta esta expresión f o esto pasa, por lo que queremos afirmar que esto sucede, por lo que esta expresión debe ser verdadera para que esta prueba pase , así que avancemos y ejecutemos solo esta prueba, hagamos clic en el pequeño diamante esta vez podemos ver la construcción del proyecto para que vea nuestro proyecto se ejecuta y luego vemos que la prueba tuvo éxito porque funcionó, así que este es nuestro proyecto y este es nuestro proyecto de destino de prueba unitaria similar a ambos les gusta surgir al mismo tiempo porque ejecutamos nuestro proyecto real pero lo que vemos en el la consola aquí está seleccionada, las pruebas comenzaron porque hicimos clic en esta prueba en lugar de hacer clic en el comando u habría dicho como todas las pruebas y podemos ver xc prueba que es lo que ejecutamos esta es la clase en la que estábamos y luego ver todo el camino hacia aquí ejecutamos la prueba, agregue 10 trabajos y se podía ver que comenzó, pasó y luego esto dice que todo el conjunto pasó, es decir, todo este conjunto de pruebas y luego volvemos aquí y dice que ejecutamos una prueba y seleccionamos una prueba ejecutar un uno uno prueba cero con cero fa ilures sí, así que básicamente la prueba pasó y puede ver cuánto tiempo lleva ejecutar su prueba también y tenemos la pequeña marca de verificación aquí y luego esa ventana emergente que aparece diciendo que nuestra prueba pasó, así que eso es bueno, pero también hay otros tipos de afirmaciones que podemos usar, por lo que esto es normal, como cualquier expresión que esté aquí, si esto es cierto, pasa, si termina siendo falso, entonces falla, así que si cambiamos eso a 21 y ejecutamos esto nuevamente, sabemos que agregamos 10 a este número que es igual a 20, pero decimos que lo esperado debería ser igual a 21, lo que sabemos que no funcionará , así que fallamos en la prueba, tenemos una x aquí porque nuestra prueba no pasó y luego hay una x aquí porque uno de las pruebas en toda esta clase no pasaron y luego ven aquí arriba que es una x también porque todo el conjunto hay algo que está fallando y luego lo mismo aquí abajo vemos que algo falló y luego todo esto dice es xct afirmar verdadero falló , lo que a veces no es útil, por lo que puede incluso agregue otro parámetro aquí, así que si ponemos una coma y agregamos algo, esto es lo que dirá cuando nuestra prueba falle, así que digamos que debería ser 20. Entonces, si ejecutamos nuestra prueba nuevamente y sabemos que esta va a fallar porque esto debería ser 20, no 21. Se ejecuta, obtenemos un error en la prueba y luego, cuando hacemos clic en esto aquí ahora, nos dice que xct afirmar verdadero falló, esto debería ser 20. por lo que es realmente fácil de depurar y ver lo que debería haber sucedió en lugar de solo adivinar como si simplemente dijera que falló y usted está como bueno, no sé la razón por la que falló, pero otra cosa que podemos hacer, primero cambiemos esto de nuevo a una prueba de aprobación, hay otras afirmaciones de que podemos hacerlo podemos hacer, podrías ver que esto en realidad ejecuta xct afirmación verdadera, así que si hacemos xct hay muchas afirmaciones diferentes, así que hagamos xct afirmación verdadera esperada igual a 20 y esta es más o menos lo mismo que esta, así que esta expresión es la misma que esta expresión aquí pero una aún mejor que podemos n uso que realmente ayuda a solidificar lo que esto hace y lo que estamos tratando de lograr con esta prueba es oops xct afirmar igual así que lo que podemos hacer es este es xct afirmar igual y esto toma realmente toma dos parámetros pero agregué el el tercero de esto es nuevamente la descripción, por lo que es lo mismo que esta parte , creo que aparece como si ordenáramos hacer clic en esto y hacer clic en mostrar ayuda rápida, en realidad dice mensaje y no es así, así que tal vez no, no miraremos en eso, pero miramos esto , tenemos que el primer parámetro debe ser igual al segundo parámetro porque es literalmente xct afirmar igual afirmar que el primer valor es igual al segundo valor y podemos tener múltiples afirmaciones dentro de una sola prueba, así que sigamos adelante y ejecute esto y deberíamos pasar la prueba y ahí vamos, la prueba tuvo éxito y podemos ver también que ejecutamos solo nuestra prueba única y hagamos una prueba para la otra función que hicimos, así que probemos que b cuadrado tiene éxito, así que hagámoslo dado dado uno entonces w haremos que var esperado sea igual a cero, así que realmente no necesitamos esa parte entera allí, simplemente la puse allí y luego queremos que esperado sea igual a matemática simple punto b cuadrado, hagamos 4, ¿qué es 4 veces 4? es 16 y tengo que deletrear esperado correctamente para que todo funcione y, de nuevo, podríamos hacer una aserción xct igual y así hacer este más corto y esperamos que esperado sea igual a 16. Vaya, ahí vamos, así que es más o menos lo mismo cosa, uh, ejecutamos esto y luego deberíamos ver en nuestra consola que ahora tenemos dos pruebas que se están ejecutando, no solo una o no, lo siento, esta es solo una prueba en ejecución porque solo hice clic en el pequeño botón aquí, sí ejecuté una prueba, pero si fui para hacer clic en la clase aquí arriba o simplemente hacer clic en el pequeño botón de reproducción pl en la parte superior de nuestro conjunto completo de pruebas unitarias, está bien, vemos que se ejecutaron dos pruebas y todas pasaron, así que dos pruebas cero fallas y pasaré la prueba, eso es increíble, así que lo que esto realmente te ayuda a hacer es esto es muy explícito de agregar 10 y b sq uare, pero si alguien, por ejemplo, olvidó lo que significaba el cuadrado y pensó que el cuadrado significaba un número multiplicado por 2 y pensó que la persona que escribió esto estaba completamente equivocada cuando usa su base de código y fusiona su código con otros si ejecutamos nuestra prueba nuevamente veremos que una prueba, nuestra prueba de agregar 10, funciona, pero nuestra prueba b cuadrada fallará, ahí vamos, lo vemos, la ventana emergente le dice que la prueba falló porque no todo pasó, pero vemos que uno de ellos funcionó, pero el otro no y luego vemos aquí abajo que simplemente dice xcts son iguales fallidos 8 no es igual a 16. así que lo esperado es el 8 y luego lo que creemos que debería haber sido es el 16. así es como puede evitar que otros jueguen con el código y luego, si no sabe que sucedió algo, puede usar las pruebas unitarias en esta serie. Hemos aprendido los conceptos básicos de las pruebas unitarias . diferentes tipos de un sserts, por lo que en el próximo proyecto agregaremos pruebas unitarias a un proyecto que aún no las tiene y escribiremos pruebas unitarias para un código más aplicable además de simplemente agregar números, nos vemos en el próximo video

Noticias relacionadas