Pages

Monday, August 28, 2017

Haz tu propio C# snippet para generar Unit Tests

El objetivo de los 'snippets' es evitarnos el tener que teclear lo mismo cada vez, y si tu estas actualmente haciendo Unit tests, no estas ya cansado de escribir  arrange, act y assert ?

Si eres como yo, entonce la respuesta es SI. y no solo eso sino que hay otras areas en las que podemos mejorar nuestra experiencia de programacion. Asi que toma esto como un ejemplo introductorio a los snippets, y creemos uno para nuestro unit test.

Lo que queremos lograr es que con un par de teclas podamos obtener esto:


Y que el cursor se enfoque en la parte WhatAreWeTesting (que estamos testeando)  de el nombre de la funcion para que podamos cambiarla, luego con un TAB para a la parte 'ExpectedResult' (Resultado esperado) y luego despues de un ENTER final que el cursor vaya a la linea de arrange para poder empezar a escribir nuestro codigo.

Un snippet es solo un archivo XML que tiene una estructura especifica, lo puedes crear en cualquier editor de texto, en este caso yo usare el Visual Studio Code .

Asi que abrimos cualquier Folder en VS Code:


y aƱadimos un nuevo archivo XML:



Abre el archivo y copia esta plantilla base en el:


La cabecera tiene varios Tags (puedes obtener una lista completa en los links al final del articulo) , modifiquemos nuestra cabecera (Header),vamos a adicionar informacion sobre el snippet, y una parte importante 'el shorcut que queremos usar' (ese es el texto que queremos poner en VS y que disparara la ejecucion del Snippet ocn un doble-TAB), en este caso usaremos "uts" (por Unit Test Stub), asi que al cabecera quedara asi:


La seccion 'snippet' es la que tiene la informacion sobre el codigo en si, podemos poner nuestro codigo en la seccion 'CODE' y en esa seccion podemos usar Variables, esas variables son las partes del codigo donde el cursor se movera tras cada TAB, Y nos permitiran cambiar el texto que contienen. Asi que dentro de nuestra seccion'snippet' lo primero que debemos hacer es declarar las dos variables que queremos usar en el snippet asi:


Los IDs son los nombres de las variable que podemos usar en la seccion de codigo del snippet. La seccion de 'Code' es basicamente el codigo que queremos que e genere, haciendo uso de nuestras variables podemos adicionar texto que puede ser reemplazado, simplemente rodeandolo con $ <- ese es el delimitador de variables por defecto, Tambien toma nota de la variable "end", que se usa para indicar donde deberia ir el cursor al presionar ENTER. Nuestra seccion de codigo deberia quedar asi :


La propiedad 'Kind' la ponemos a 'method decl', Eso especifica que el snippet de codigo es un metodo, y por lo tanto debe ser insertado dentro de una clase o modulo.

Una vez que tengas el snippet completo renombra el archivo a  'unitteststub.snippet' y grabalo en el folder de snippets de Visual Studio, por ejemplo:

c:\Users\Administrator\Documents\Visual Studio 2017\Code Snippets\Visual C#\My Code Snippets\

Para probarlo, abrimos Visual Studio, nos ubicamos dentro de una clase y tecleamos 'uts':


Fijate  las notas sobre nuestro snippet en el helper ;).
Presiona TAB dos veces y presto!, el codigo se genera y el cursor se ubica en nuestra primera variable:


cambia la primera parte del nombre y presiona TAB pra ir a la segunda parte, cambiala y presiona ENTER para terminar y el cursor nos deja listos para introducir nuestro codigo.


El snippet completo esta entre mis gits en github Aqui.

Los siguientes links te pueden ayudar a crear snippets mas elaborados:

Y eso, amigo mio, es todo !

No comments:

Post a Comment