Post on 23-Sep-2020
Avenida de Castilla,1 - Edificio Best Point - Oficina 21B28830 San Fernando de Henares (Madrid)
tel./fax: +34 91 675 33 06info@autentia.com - www.autentia.com
Somos su empresa de Soporte a Desarrollo Informático.Ese apoyo que siempre quiso tener...
1. Desarrollo de componentes y proyectos a medida
TecnologíaDesarrolloSistemas
Gran Empresa
Producción
autentia
Certificacióno Pruebas
Verificación previa
RFP Concurso
Consultora 1
Consultora 2
Consultora 3
Equipo propio desarrolloPiloto
3a
3b
1. Definición de frameworks corporativos.2. Transferencia de conocimiento de nuevas arquitecturas.3. Soporte al arranque de proyectos.4. Auditoría preventiva periódica de calidad.5. Revisión previa a la certificación de proyectos.6. Extensión de capacidad de equipos de calidad.7. Identificación de problemas en producción.
3. Arranque de proyectos basados en nuevas tecnologías
¿Qué ofrece Autentia Real Business Solutions S.L?
Para más información visítenos en: www.autentia.com
Compartimos nuestro conociemiento en: www.adictosaltrabajo.com
Gestor portales (Liferay)Gestor de contenidos (Alfresco)Aplicaciones híbridas
Tareas programadas (Quartz)Gestor documental (Alfresco)Inversión de control (Spring)
BPM (jBPM o Bonita)Generación de informes (JasperReport)ESB (Open ESB)
Control de autenticación y acceso (Spring Security)UDDIWeb ServicesRest ServicesSocial SSOSSO (Cas)
Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery
JPA-Hibernate, MyBatisMotor de búsqueda empresarial (Solr)ETL (Talend)
Dirección de Proyectos Informáticos.Metodologías ágilesPatrones de diseñoTDD
2. Auditoría de código y recomendaciones de mejora
4. Cursos de formación (impartidos por desarrolladores en activo)
8/8/2014 Primeros pasos con Clojure: Leiningen y Midje
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=clojure-introduccion 1/5
Entra en Adictos a través de
Entrar
E-mail
Contraseña
RegistrarmeOlvidé mi contraseña
Inicio Quiénes somos Formación Comparador de salarios Nuestros libros Más
» Estás en: Inicio Tutoriales Primeros pasos con Clojure: Leiningen y Midje
Síguenos a través de:
Catálogo de serviciosAutentia
Últimas Noticias
» Portales, gestores decontenidos documentales ydesarrollos a medida
» Comentando el libro Start-up Nation, La historia delmilagro económico de Israel,de Dan Senor & Salu Singer
» Screencasts deprogramación narrados enEspañol
» Sorteo de entradas paraAPIdays Mediterranea
» Concurso del Día de laMadre:
Histórico de noticias
Últimos Tutoriales
» Smoke Testimplementados con TestNGy Selenium
» Primeros pasos conTableau
» Notificaciones push conAndroid, Google CloudMessage y JEE
» Phonegap/Cordova y lasNotificaciones Push
» Metodología ágiles.
Ver todos los tutoriales del autor
Alejandro Pérez García
Alejandro es socio fundador de Autentia y nuestro experto en J2EE, Linux yoptimización de aplicaciones empresariales.
Ingeniero en Informática y Certified ScrumMaster
Seguir a @alejandropgarci 1,102 seguidores
Si te gusta lo que ves, puedes contratarle para darte ayuda con soporte experto,impartir cursos presenciales en tu empresa o para que realicemos tus proyectoscomo factoría (Madrid). Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo,factoría y formación.
Fecha de publicación del tutorial: 2014-08-08 Tutorial visitado 1 veces Descargar en PDF
Primeros pasos con Clojure: Leiningen y Midje
Índice de contenidos1. Introducción2. Entorno3. Instalación de Clojure con Leiningen3.1. Instalación de Leiningen3.2. Creación de un proyecto3.3. Inspeccionando el fichero de proyecto: project.clj4. Ejecutando los tests de Clojure5. Tests más legibles con Midje5.1. Instalación de Midje5.2. Escribiendo un test de Midje5.3. Hágase la magia: ejecución automática de los tests6. Conclusiones7. Sobre el autor
1. Introducción
Clojure es un lenguaje funcional dinámico que corre en la JVM (Máquina Virtual de Java). Podemos destacar lassiguientes características:
Al ser un lenguaje funcional potencia al idea de inmutabilidad, de forma que todos los valores son constantes (noexiste el concepto de variable).Derivado de lo anterior se potencia el multi-hilo ya que al trabajar con constantes se minimizan los conflictos de laconcurrencia. De hecho Clojure está pensado desde su inicio para sacarle el mayor partido al procesamientomulti-core.Al correr en la JVM, se saca toda la potencia de esta máquina virtual.Al correr en la JVM se puede aprovechar todo el ecosistema/librerías que existe de Java, siendo muy fácil llamarde Clojure a Java o viceversa.
Todas estas características y muchas más (recomiendo echar un vistazo a su página oficial) hacen de este lenguaje unaopción sería a la hora de hacer nuestros desarrollos.
En este tutorial vamos a ver como dar los primeros pasos para empezar a escribir tests y código de producción.
2. Entorno
El tutorial está escrito usando el siguiente entorno:
Hardware: Portátil MacBook Pro 15’’ (2.3 GHz Intel i7, 16GB 1600 Mhz DDR3, 500GB Flash Storage).
S E L E N I U M V I S U A L T E S T I N GAdd Automated Visual Testing to your Selenium tests in minutes
8/8/2014 Primeros pasos con Clojure: Leiningen y Midje
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=clojure-introduccion 2/5
Catalizando el cambio ensector informático
Últimos Tutoriales delAutor
» Cómo integrar en Gradleun servidor Jetty o Tomcat
» Kettle no es una tetera, esla herramienta de ETL dePentaho!
» Crea todo un entorno demáquinas virtuales con unsolo comando, gracias aVagrant
» ¿Endemoniado por lo lentoque es Gradle en elarranque? Aprende acontrolar su Daemon, yvuela!
» Cómo instalar Gradle,herramienta deautomatización de builds
NVIDIA GeForce G7 750M
Sistema Operativo: Mac OS X Lion 10.9.4
Clojure 1.6.0
Leiningen 2.4.3
Midje 1.6.3
JVM 1.8.0_11
3. Instalación de Clojure con Leiningen
Leiningen es la herramienta que nos va a permitir gestionar el ciclo de compilación, dependencias, ejecución de los test,empaquetado, … Sería como el Maven o Gradle de Java, o el Grunt de JavaScript.
Otra característica que tiene Leiningen es que nos permite gestionar la versión de Clojure que estamos usando en elproyecto, encargándose él mismo de descargarla e instalarla si es necesario (como Clojure es una app Java, ladescarga de los repositorios de Maven y la guardará en nuestro ~/.m2/repository)
3.1. Instalación de Leiningen
Para instalar Leiningen es tan sencillo como hacer:
1. Descargar el script lein
2. Colocarlo en en el $PATH para que lo podamos ejecutar desde la línea de comando (ej. /usr/local/bin)
3. Hacerlo ejecutable (chmod a+x /usr/local/bin/lein)
4. Ejecutarlo (lein) y en este primera ejecución se descargará e instalará a si mismo
3.2. Creación de un proyecto
Lein tiene plantillas de proyectos al estilo de los arquetipos de Maven. Para crear un proyecto de tipo aplicación, es decirque será ejecutable por si mismo, basta con ejecutar en la línea de comando:
$ lein new app mis-cositas
Donde:
new - es el comando lein que queremos ejecutar.app - es el nombre de la plantilla. Si lo omitimos usará la plantilla por defecto que es para crear una librería (un.jar).mis-cositas - es el nombre que le quiero dar a mi aplicación.
Esto debería haber generado la siguiente estructura:
mis-cositas/ .gitignore /doc intro.md LICENSE project.clj README.md /resources /src /mis_cositas core.clj /test /mis_cositas core_test.clj
Donde podemos destacar
el fichero project.clj - que es el que gestiona la compilación (como el pom.xml de Maven),el fichero core.clj - donde podemos empezar a desarrollar nuestra lógica de negocio,el fichero core_test.clj - donde podemos empezar a escribir nuestros tests.
3.3. Inspeccionando el fichero de proyecto: project.clj
Lo primero que puede llamar la atención de este fichero es que es un fichero de Clojure como otro cualquiera.
Por ahora sólo destacaremos la línea 6 donde se especifican las dependencias, y vemos como la única que hay ahoramismo es la propia versión de Clojure que queremos usar. Una ventaja de esto es que resulta muy sencillo tener
123456789
(defproject mis-cositas "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" :license :name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html" :dependencies [[org.clojure/clojure "1.6.0"]] :main ^:skip-aot mis-cositas.core :target-path "target/%s" :profiles :uberjar :aot :all)
8/8/2014 Primeros pasos con Clojure: Leiningen y Midje
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=clojure-introduccion 3/5
distintos proyectos con distintas versiones de Clojure, ya que sólo habrá que indicar la que nos interesa en el fichero deproyecto, sin necesidad de hacer ninguna instalación previa.
4. Ejecutando los tests de ClojureClojure ya viene con una sintaxis de tests, y vimos como lein nos había generado uno de prueba. Para ejecutarlo bastacon hacer:
lein test
Deberíamos ver algo como:
Ejecutar tests de Clojure con Lein
El tests a fallado, esto es lo normal cuando el test ha sido generado por una plantilla. Vamos a echar un ojo al código deltest:
Vemos como importa el código de producción en la línea 2 con el require y luego como define un test donde comparasi el 0 y el 1 son iguales (=).
Para ver que más aserciones podemos hacer recomiendo visitar la documentación oficial del API de testing de Clojure
5. Tests más legibles con Midje
El sistema de tests que viene con Clojure sirve más que de sobra para probar cualquier cosa, pero se queda más bienescaso en cuanto a legibilidad. Además para lanzarlos tenemos que invocar o lein o el REPL, con lo que puede ser unpoco incómodo.
Para solventar estos dos problemas le podemos dar las gracias a @marik, el creador de Midje, un estupendo frameworkde test para Clojure, de forma que sea más sencilla la tarea de escribir los tests. Además soporta tanto el desarrollo dearriba-a-bajo, como de abajo-a-arriba.
La idea de Midje es que estos tests queden como si fuera la documentación de nuestro proyecto.
5.1. Instalación de Midje
Para poder empezar a usar Midje tenemos que hacer dos sencillas cosas. La primera a nivel global nos permitiráintegrar Midje dentro del ciclo de vida de Lein, de forma que encontremos el comando midje dentro de la herramientalein (ya antes hemos visto otros comandos como new o test).
Para ello tenemos que añadir la siguiente línea al fichero ~/.lein/profiles (si no existe todavía lo creamos):
Como segundo paso tenemos que indicar a nuestro proyecto que queremos usar Midje, para ello modificamos el ficheroproject.clj que hemos visto antes, para que quede de la siguiente manera:
Nótese que sólo hemos cambiado las líneas 9 y 10, para añadir la dependencia de midje sólo en el profile dedesarrollo (:dev). Así esta dependencia no se “arrastrará” cuando preparemos el ejecutable de la aplicación.
Ahora deberíamos poder ejecutar en la línea de comando:
$ lein midje
y veremos un resultado del estilo:
1234567
(ns mis-cositas.core-test (:require [clojure.test :refer :all] [mis-cositas.core :refer :all])) (deftest a-test (testing "FIXME, I fail." (is (= 0 1))))
1 :user :plugins [[lein-midje "3.1.3"]]
12345678910
(defproject mis-cositas "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" :license :name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html" :dependencies [[org.clojure/clojure "1.6.0"]] :main ^:skip-aot mis-cositas.core :target-path "target/%s" :profiles :dev :dependencies [[midje "1.6.3"]] :uberjar :aot :all)
?
?
?
8/8/2014 Primeros pasos con Clojure: Leiningen y Midje
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=clojure-introduccion 4/5
Ejecutar tests de Midje con Lein
En la imagen podemos ver como Midje también ejecuta los test de Clojure que tengamos en el proyecto, y ademáscolorea la salida para facilitar su lectura. ¡Sólo con eso ya es todo un acierto!
5.2. Escribiendo un test de Midje
Vamos a añadir el fichero test/mis_cositas/core_midje_test.clj, con el siguiente contenido:
Se aprecia en el código que en al izquierda de la flecha => está la expresión que queremos probar, y a la derecha elvalor del assert que debe ser el resultado.
Esto no es más que un pequeño ejemplo, e igual que antes recomiendo visitar la documentación de Midje.
5.3. Hágase la magia: ejecución automática de los tests
Si hemos ejecutado un par de veces los tests, habremos visto que tarda en arrancar. Esto se debe a que Clojure seejecuta en la JVM, así que para ejecutar cualquier cosa tiene que levantarla, y esto no es rápido.
Evidentemente esto no se puede quedar así porque sino el desarrollo sería imposible con esos tiempos de espera.Podemos paliarlo abriendo un REPL (esto carga una sola JVM que mantenemos mientras dure la sesión) y ejecutandolos tests desde aquí, pero esto es más bien incómodo porque hay que forzar el refresco de los fuentes que cambien, asíque tampoco es muy viable.
La mejor opción es ejecutar:
$ lein midje :autotest
Esto hace que al consola se quede “escuchando” cualquier cambio en los ficheros, y en cuanto esto sucede, Midje seencarga de refrescar los fuentes y ejecutar los tests. Todo en un abrir y cerrar de ojos. Así, sí!
6. Conclusiones
Clojure es un lenguaje muy potente, con unas características más que interesantes. De hecho muchos piensan que es ellenguaje del futuro. Yo no se si esto será cierto, pero si creo que es muy interesante aprenderlo sobre todo para todosaquellos como yo que estamos acostumbrados al paradigma de la Orientación a Objetos, cambiar al paradigmafuncional nos fuerza a ver las cosas de otra manera y siempre se pueden aplicar buenas ideas de uno a otro (como lode intentar que todo sea inmutable).
Espero que con este tutorial la barrera de entrada para montar el entorno sea mínima y podáis centraros en aprender ellenguaje, que es lo importante.
Si me preguntáis por editor, la verdad es que por ahora estoy usando simplemente Vim con el plugin Vim Clojure Static.Si alguien conoce algo mejor que me lo diga ;;)
7. Sobre el autor
Alejandro Pérez García, Ingeniero en Informática (especialidad de Ingeniería del Software) y Certified ScrumMaster
Socio fundador de Autentia (Desarrollo de software, Consultoría, Formación)
mailto:alejandropg@autentia.com
Autentia Real Business Solutions S.L. - “Soporte a Desarrollo”
http://www.autentia.com
A continuación puedes evaluarlo:
Regístrate para evaluarlo
123456789
(ns mis-cositas.core-midje-test (:use midje.sweet) (:require [clojure.string :as str] [mis-cositas.core :refer :all])) (fact "`split` splits strings on regular expressions and returns a vector" (str/split "a/b/c" #"/") => ["a" "b" "c"] (str/split "" #"irrelevant") => [""] (str/split "no regexp matches" #"a+\s+[ab]") => ["no regexp matches"])
?
8/8/2014 Primeros pasos con Clojure: Leiningen y Midje
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=clojure-introduccion 5/5
Esta obra está licenciada bajo licencia Creative Commons de Reconocimiento-No comercial-Sin obras derivadas 2.5
IMPULSA Impulsores Comunidad ¿Ayuda?
----sin clicks + + + + + + + +
0 personas han traído clicks a esta página
powered by karmacracy
Share | 0
» Registrate y accede a esta y otras ventajas «
Anímate y coméntanos lo que pienses sobre este TUTORIAL:
Por favor, vota +1 o compártelo si te pareció interesante
More ShareShareShareShareShareShare
Copyright 2003-2014 © All Rights Reserved | Texto legal y condiciones de uso | Banners | Powered by Autentia | Contacto