tag:blogger.com,1999:blog-42397951399496008362024-03-13T00:31:00.737-07:00El blog de RolandoRolando Martinez.http://www.blogger.com/profile/15040974254911347569noreply@blogger.comBlogger10125tag:blogger.com,1999:blog-4239795139949600836.post-44670319246394597502014-01-26T17:37:00.000-08:002014-01-26T17:53:56.990-08:00Knockoutjs: Primeros pasos<b><br /></b>
<b>Ejemplo Hola mundo</b><br />
<br />
Básicamente lo que mostrare aquí es un estracto del primer ejemplo de la pagina oficial de Knockoutj (KO desde ahora).<br />
En este ejemplo existen 2 controles 'input' los cuales fueron enlazados a 2 variables del tipo ko.observable alojadas en un objeto javascript al cual llamaremos viewmodel (este tipo de variables será tratado en entregas posteriores). Ademas existe una tercera variable la cual es dependiente de las dos primeras, es decir, cualquier cambio en las variables "firstName" o "lastName" provocara que cambios en la variable "fullName". Como ven mas abajo les dejo el ejemplo funcionando sobre http://jsfiddle.net/ (Desde el ejemplo ustedes pueden ir a las distintas pestañas: Result,Html, Css,Javascript).<br />
<br />
<br />
<iframe frameborder="0" height="300" src="http://jsfiddle.net/rolandomartinezg/mtS3g/3/embedded/result" width="100%"></iframe>Rolando Martinez.http://www.blogger.com/profile/15040974254911347569noreply@blogger.com0tag:blogger.com,1999:blog-4239795139949600836.post-12045550948753519302014-01-26T15:42:00.000-08:002014-01-26T17:47:54.797-08:00Knockoutjs: IntroducciónLa idea de este primer articulo es poder entregar algunas definiciones de acuerdo al contenido desde la pagina oficial de <a href="http://knockoutjs.com/">http://knockoutjs.com</a><br />
Vamos a ver que nos dice la knockoutjs !!<br />
<br />
<b>Introducción:</b><br />
<br />
knockout es una libreria javascript que te ayuda a crear interfaces de usuario ricas junto con un modelo de datos subyacente. Cada vez que tu tienes secciones en la UI que se actualize dinamicamente (por ejemplo cambiar algo dependiendo de las acciones del usuario o cuando una fuente de datos cambia), entonces knockout (KO) te puede ayudar a implementarlo de manera simple y mantenible.<br />
<br />
<b>Características:</b><br />
<i>Elegante traking de dependencias</i>: Automáticamente actualiza las partes correctas de tu interfaz de usuario cada vez que tu modelo de datos cambia.<br />
<i>Binding declarativo</i>. Entrega una simple manera de conectar los elementos de tu interfaz de datos a tu modelo. Tu puedes construir elementos complejos en tu UI y fácilmente usando "binding contexts" anidados arbitrariamente.<br />
Extensible: Implementar comportamientos personalizados como nuevos bindings declarativos para fácil reuso en solo pocas lineas de código.<br />
<br />
<b>Beneficios adicionales:</b><br />
<i>Libreria Javascript pura</i>: Trabaja con cualquier servidor o tecnología al lado del cliente.<br />
Puede ser agregada a tu aplicacion web ya existente sin requerir mayores cambios de arquitectura.<br />
<i>Compacta</i>: pesa alrededor de 13kb.<br />
Trabaja sobre cualquier navegador convencional: (IE 6+, Firefox 2+, Chrome, Safari, otros).<br />
<br />
<b>¿Donde comenzar?</b><br />
<b><br /></b>
La forma más rápida de aprender es pasar por la pagina oficial de knockout. Una vez dentro ustedes van a la sección <i><a href="http://knockoutjs.com/examples/">Live examples</a></i>. <br />
<br />
Espero ir pronto con algunos ejemplo prácticos...!!!
Rolando Martinez.http://www.blogger.com/profile/15040974254911347569noreply@blogger.com0tag:blogger.com,1999:blog-4239795139949600836.post-7096352155649487802009-03-19T12:07:00.000-07:002009-03-19T12:13:54.867-07:00Perfomance en ASP.NETAlgunas veces sucede que al hacer un request a una pagina X, no encontramos que estamos haciendo llamdas identicas<br />a la base de datos, ya sea porque tenemos distintos objetos de negocio que utilizan los<br />mismos proveedores de datos (DAL) o porque dentro de las misma pagina se encuentran insertos dos o más controles de usuario (ascx).<br />Ahora bien, una manera de optimizar nuestros tiempos de respuesta sin tener que ir a la base de datos dos o más veces es utilizar la coleccion items inserta dentro del objeto<br />HttpContext.Current.<br /><img src="file:///C:/DOCUME%7E1/Mercatus/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /><br />Para que les quede más claro, un ejemplo escrito en VB.NET<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo6T-E4w2vkdQYiYPNY8PnMsGMQlWnqscwsz9MhPRV4QqsC3ZFrF5bxrIRUtJG7Kr7x68yojatGB4mSbzHrO7iZAUvib3yoeZPPFvFct-Fv15tC4UHC77-Kst8jR2eLRw5aF7p9t6huXo/s1600-h/blog.JPG"><img style="cursor: pointer; width: 510px; height: 138px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo6T-E4w2vkdQYiYPNY8PnMsGMQlWnqscwsz9MhPRV4QqsC3ZFrF5bxrIRUtJG7Kr7x68yojatGB4mSbzHrO7iZAUvib3yoeZPPFvFct-Fv15tC4UHC77-Kst8jR2eLRw5aF7p9t6huXo/s400/blog.JPG" alt="" id="BLOGGER_PHOTO_ID_5314978897445015090" border="0" /></a><br /><br /><br />En el codigo anterior lo primero que se hace es consultar si existe un objeto UserInfo cuya clave sea "user" & userID.toString, y en caso que no se encuentre<br />se hace la llamda a la base de datos y se inserta el objeto dentro de la coleccion items de tal forma que la siguiente llamada al metodo GetUserByUserId utilize<br />la informacion guardada en nuestra hashtable items.<br /><br />El post es corto y no entra en detalles, pero creo que se entiende.Rolando Martinez.http://www.blogger.com/profile/15040974254911347569noreply@blogger.com0tag:blogger.com,1999:blog-4239795139949600836.post-6723211370368439022009-02-10T11:32:00.000-08:002009-02-10T18:30:31.781-08:00Perfomance: Como recorrer un ArrayListAlquien se ha puesto a pensar, cual es la mejor forma de iterar sobre un objeto del tipo de dato arraylist?. Las alternativas para poder iterar sobre este tipo de dato es:<br /><ul><li>Usar for</li><li>Usar un foreach</li><li>o un ciclo while utilizando GetEnumerator()</li></ul>Para salir de esta dudita, cree tres metodos para revisar cual de ellos es el menor tiempo toma en ser ejecutado.<br />Aqui va el codigo,<br /><br /><span style="font-weight: bold;">Usando for:</span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih1KQBXL7oFRlWKr7sQQyhBgOgTKisYaqwAoz7RlP95EDy1z8rnSFO-4ORazmrM5xdpsPkleptTQEDioy-MbRjnIkWNQAqt_Ih1_DeND946-cFIKANRK4kWM0aVnk_cNnzL16c-hjgAbw/s1600-h/usingfor.JPG"><img style="cursor: pointer; width: 400px; height: 250px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih1KQBXL7oFRlWKr7sQQyhBgOgTKisYaqwAoz7RlP95EDy1z8rnSFO-4ORazmrM5xdpsPkleptTQEDioy-MbRjnIkWNQAqt_Ih1_DeND946-cFIKANRK4kWM0aVnk_cNnzL16c-hjgAbw/s400/usingfor.JPG" alt="" id="BLOGGER_PHOTO_ID_5301359907564466754" border="0" /></a><br /><br /><span style="font-weight: bold;">Usando forEach</span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGaJA1PPWOz0USCLYRHq9NJ-04lmlwG2Gdc8n-9fAMxdWufQuP3hyphenhyphenvd2lLxLjb8PQhGn_P_AuwvB3wQJ8niB73EuH7ynrZN2uDuP2ISOsoOkSGqMA6kCPYtTNsSZLAtimdQJpJxymFmGQ/s1600-h/foreach.JPG"><img style="cursor: pointer; width: 400px; height: 241px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGaJA1PPWOz0USCLYRHq9NJ-04lmlwG2Gdc8n-9fAMxdWufQuP3hyphenhyphenvd2lLxLjb8PQhGn_P_AuwvB3wQJ8niB73EuH7ynrZN2uDuP2ISOsoOkSGqMA6kCPYtTNsSZLAtimdQJpJxymFmGQ/s400/foreach.JPG" alt="" id="BLOGGER_PHOTO_ID_5301360194039808690" border="0" /></a><br /><br /><span style="font-weight: bold;">Usando GetEnumerator</span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwTs2AoatCgnvW9LJgGFcRCxqvY6YlJ0IOdAsh6uBtrzMl0wpSmfZtvkY91kB5CcbZZfZN-37GBhXycTK6YX4qjnc_VqQd84mDWZ0FFdfoOzDOW3TEr9pfGHWHtxgHrcm9DlKEnfLQGCo/s1600-h/getenumerator.JPG"><img style="cursor: pointer; width: 400px; height: 223px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwTs2AoatCgnvW9LJgGFcRCxqvY6YlJ0IOdAsh6uBtrzMl0wpSmfZtvkY91kB5CcbZZfZN-37GBhXycTK6YX4qjnc_VqQd84mDWZ0FFdfoOzDOW3TEr9pfGHWHtxgHrcm9DlKEnfLQGCo/s400/getenumerator.JPG" alt="" id="BLOGGER_PHOTO_ID_5301360439561768146" border="0" /></a><br /><br />Y mis resultados fueron:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGMpSdFmPy8brbH81JIe0RYMO2XH2dXyBBoN1M0d9LvCUo3aa4K37_WN1oJzBe9MhhzHnahl59FP4koAF0ilqhiMtO6fvoc0S-kh7hyxRmozVUL8eT-Y8K2-Kl7k5sHpOCI5pf8sfjYm8/s1600-h/resultados.JPG"><img style="cursor: pointer; width: 336px; height: 136px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGMpSdFmPy8brbH81JIe0RYMO2XH2dXyBBoN1M0d9LvCUo3aa4K37_WN1oJzBe9MhhzHnahl59FP4koAF0ilqhiMtO6fvoc0S-kh7hyxRmozVUL8eT-Y8K2-Kl7k5sHpOCI5pf8sfjYm8/s400/resultados.JPG" alt="" id="BLOGGER_PHOTO_ID_5301361347459039426" border="0" /></a><br /><br /><br />Bueno, llego hasta aqui... saquen sus propias conclusiones :)<br />Saludos,Rolando Martinez.http://www.blogger.com/profile/15040974254911347569noreply@blogger.com0tag:blogger.com,1999:blog-4239795139949600836.post-22507129592037066212008-07-05T21:13:00.000-07:002008-07-05T23:06:43.937-07:00Como instalar Nant en LinuxDecidido en que <a href="http://nant.sourceforge.net/">Nant</a>, <a href="http://nunit.org/index.php">NUnit</a> y <a href="http://ccnet.thoughtworks.com/">CCNet</a> deben funcionar en Linux, comencé con la instalación de Nant. En español no encontre mucho ( ¿o no supe buscar?), asi que aquí les dejo los comandos para aquellas personas que necesiten hacer correr Nant en Linux :=)<br /><ul><li>Crear un archivo script llamado nant en /usr/local/bin</li><li>Abrelo y agrega la siguiente instruccion : <br /></li></ul><pre> #!/bin/sh<br /> exec mono /usr/local/nant/bin/NAnt.exe "$@<br /></pre><ul><li>Se cambien los permiso del archivo.<pre>chmod a+x /usr/local/bin/nant<br /></pre></li></ul>Para probar si realmente tu instalación fue un exito ejecuta el comando nant -help y deberias ver una lista con argumentos aceptados por NAnt. :)<br /><br />Para el caso de <a href="http://nantcontrib.sourceforge.net/">NantContrib</a>, solo debieran copiar el contenido de la carpeta bin de nantcontrib dentro de la carpeta bin de NAnt.<br /><br />Espero este pequeño post te ayude :)Rolando Martinez.http://www.blogger.com/profile/15040974254911347569noreply@blogger.com3tag:blogger.com,1999:blog-4239795139949600836.post-20471723605115423502008-04-20T09:01:00.000-07:002008-04-20T16:33:24.627-07:00Como crear una tarea MySql para Nant<span style=";font-family:verdana;font-size:78%;" ><span style=";font-family:verdana;font-size:100%;" >Hola a todos, hace tiempo que no escribía, pero ahora ya estoy aquí con alguna información interesante!!!<br /><br />Pero bueno, vamos al grano. Hace algunas semanas atrás intente ejecutar un pequeño script de MySql utilizando la herramienta <a href="http://nant.sourceforge.net/">Nant</a>(una buena referencia de lo que es Nant la puedes encontrar aquí) . Y lo primero que hice para llegar a mi objetivo es suscribirme a la lista de nant y enviar un pequeño correo explicando mi <a href="http://www.nabble.com/Executing-a-mysql-script-inside-Nant-to16256023.html">problema</a>, y que sonaba como esto:<br />"Hola a todos, necesito ayuda para correr un script de MySql utilizando Nant" (bueno el correo era algo más extenso, pero la idea se entiende ).<br />Lamentablemente, para mí, no logre encontrar una solución. Algunas personas de la lista me aconsejaron que utilizara la tarea sql del proyecto <a href="http://nantcontrib.sourceforge.net/">nantcontrib</a>, pero no hubo caso (la respuesta del porque esta tarea no me servia es algo extensa, así que creo que la daré en un próximo articulo).<br />Y entonces, ¿que paso?, que me decidí a escribir mi propia tarea para MySql. =). El código es bastante sencillo y me base en el código de la tarea sql del proyecto Nantconttrib.<br />Si alguien quiere el código se encuentra <a href="http://rapidshare.com/files/109023163/MySql.Tasks.rar">aquí</a>.<br />Una vez compilada la dll, ustedes podrán escribir archivos .build como el siguiente</span><span style="font-size:100%;"><br /></span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkyAuQMc7_EVmgZ5YycvcSdjmEui1Ydsj54xruzahLGD3_rDZjwcH9Vj6UrHl7HkEbjduGRghyphenhyphenZ_BSIt9KZ6q0XuCI7Fa-yYwVIo_i-_Q4V_SlIBPyunxq-u3ZpEVZoEiqxPCmDJej1ic/s1600-h/buildfile.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkyAuQMc7_EVmgZ5YycvcSdjmEui1Ydsj54xruzahLGD3_rDZjwcH9Vj6UrHl7HkEbjduGRghyphenhyphenZ_BSIt9KZ6q0XuCI7Fa-yYwVIo_i-_Q4V_SlIBPyunxq-u3ZpEVZoEiqxPCmDJej1ic/s400/buildfile.JPG" alt="" id="BLOGGER_PHOTO_ID_5191363208194173026" border="0" /></a><br /><br /><br /><span style="font-size:100%;">Espero esto le ayude a alguna persona que se ha topado con el mismo problema que yo =)</span></span>Rolando Martinez.http://www.blogger.com/profile/15040974254911347569noreply@blogger.com0tag:blogger.com,1999:blog-4239795139949600836.post-31257632189879201132008-03-20T07:01:00.000-07:002008-03-20T14:19:12.618-07:00Cómo ejecutar nuestros tests con MbUnit<p style="font-family: verdana;" class="MsoNormal"><span style=";font-size:85%;" >A continuación les dejo las tres formas de ejecutar nuestros Test con MBUnit:<o:p><br /></o:p></span></p> <ul style="margin-top: 0cm; font-family: verdana;" type="disc"><li class="MsoNormal" style="text-align: justify;"><span style=";font-size:85%;" >Mediante consola: Dentro de los <span style=""> </span>archivos instalados por MbUnit se encuentra la aplicación de consola <i style="">MbUnit.Cons.exe</i>. Un ejemplo de cómo usarlo se encuentra </span><span style=";font-size:85%;" ><o:p><a href="http://r0lan2.blogspot.com/2008/03/introduccin-mbunit.html">aqui</a>.<br /></o:p></span></li></ul> <ul style="margin-top: 0cm; font-family: verdana;" type="disc"><li class="MsoNormal" style="text-align: justify;"><span style=";font-size:85%;" >Via aplicación de Windows: Junto con la aplicación de consola, se encuentra una aplicación de Windows llamada <i style="">MbUnit.GUI.exe. </i>Para mas información de cómo utilizarla ver el siguiente <a href="http://www.nxtgenug.net/Article.aspx?ArticleID=107">post.</a></span><span style="font-size:85%;"><a href="http://www.nxtgenug.net/Article.aspx?ArticleID=107"><o:p></o:p></a></span><span style=";font-size:85%;" ><o:p><br /></o:p></span></li></ul> <ul style="margin-top: 0cm; font-family: verdana;" type="disc"><li class="MsoNormal" style="text-align: justify;"><span style=";font-size:85%;" >TestDriven.Net: Add-in que se integra con Visual Studio y el cual te permite ejecutar tus test dentro tu entorno de desarrollo. Esto sin necesidad de usar ninguna de las dos primeras opciones. Para más información ver mi <a href="http://r0lan2.blogspot.com/2008/03/usando-mbunit-y-testdrivennet.html">post</a> anterior.</span><span style="font-size:85%;"><br /></span></li></ul><span style="font-family: verdana;font-size:85%;" ><br />Saludos,</span>Rolando Martinez.http://www.blogger.com/profile/15040974254911347569noreply@blogger.com0tag:blogger.com,1999:blog-4239795139949600836.post-21392146918171775782008-03-15T06:26:00.000-07:002008-03-15T06:47:00.342-07:00Usando MbUnit y TestDriven.Net.<span style=";font-family:Verdana;font-size:85%;" >En el post anterior le he mostrado como ejecutar nuestras pruebas de unidad utilizando el programa de consola distribuido con MbUnit, y aunque es una opción valida para ejecutar nuestros tests, existen otras maneras de hacerlo.</span> <p class="MsoNormal"><span style=";font-family:Verdana;font-size:85%;" >A continuación mostraré como usar TestDriven.Net para ejecutar nuestras pruebas. Para el poder llevar a cabo este ejemplo es necesario instalar:<o:p><br /></o:p></span></p> <ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style=""><span style=";font-family:Verdana;font-size:85%;" ><a href="http://www.testdriven.net/">TestDriven.Net</a><o:p></o:p></span></li><li class="MsoNormal" style=""><a href="http://www.mbunit.com/"><span style=";font-family:Verdana;font-size:85%;" >Mbunit</span></a><span style=";font-family:Verdana;font-size:85%;" ><o:p><br /></o:p></span></li></ul> <p class="MsoNormal" style="text-align: justify;"><span style=";font-family:Verdana;font-size:85%;" >Una vez instalado los prerrequisitos, crearemos un ejemplo para ver como trabaja TestDriven.<o:p><br /></o:p></span></p> <p class="MsoNormal" style="text-align: justify;"><span style=";font-family:Verdana;font-size:85%;" >Lo primero será crear un proyecto del tipo biblioteca de clases. Luego de esto agregaremos la referencia de MbUnit a nuestro proyecto.<br /><o:p></o:p><br />Para nuestro ejemplo he creado un ejemplo que no tiene ningún tipo de “lógica”, y solo fue hecho para fines didácticos. El proyecto esta compuesto de dos clases una llamada datamanager, que esta compuesta por una única función que devuelve un objeto del tipo datatable, y otra clase llamada<span style=""> </span></span><span style=";font-family:Verdana;font-size:85%;" >DataManagerTest, la cual contiene un metodo GetDataTableTest que realiza una assert sobre la funcion GetDataTable de la primera clase.</span></p><p class="MsoNormal" style="text-align: justify;"><span style=";font-family:Verdana;font-size:85%;" ><br /></span></p><p class="MsoNormal" style="text-align: center;"> <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk26n-U29iUSUyhVoxwTIeSVxopC7hKtWJdGOpyxVgWzzDdOdtZ8GgFH6fgbI4gHbOwo5o_GHrLmhcd0EeD6fTsMQv_mxM85UHLa3K9vsOjnVNs_E4Gt_CvtXO6UuUAU9Ryj9PrUt6x5A/s1600-h/clase1.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk26n-U29iUSUyhVoxwTIeSVxopC7hKtWJdGOpyxVgWzzDdOdtZ8GgFH6fgbI4gHbOwo5o_GHrLmhcd0EeD6fTsMQv_mxM85UHLa3K9vsOjnVNs_E4Gt_CvtXO6UuUAU9Ryj9PrUt6x5A/s400/clase1.JPG" alt="" id="BLOGGER_PHOTO_ID_5177963802334244098" border="0" /></a></p><p class="MsoNormal" style="text-align: justify;"><span style=";font-family:Verdana;font-size:85%;" ><br /></span></p><p class="MsoNormal" style="margin-left: 35.4pt;"><span style="font-size:85%;">segunda clase....</span><span style="font-size:85%;"><o:p><br /></o:p></span></p> <p class="MsoNormal" style="margin-left: 35.4pt;"><span style="font-size:85%;"><o:p> </o:p></span></p><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Pmro0a4VlGqc_Uw1xUuREuPQRso2h2G4Req-6WjrXmV8psFBV6eatq0blpcfTc0EG7GgupB7r8ZBiub9sQH-qSU4ivCkE-IZhcu1Nbu9UOF-m96rXJFTSPdjzSBlb6Vn_Uj-_2HfHyo/s1600-h/clase2.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Pmro0a4VlGqc_Uw1xUuREuPQRso2h2G4Req-6WjrXmV8psFBV6eatq0blpcfTc0EG7GgupB7r8ZBiub9sQH-qSU4ivCkE-IZhcu1Nbu9UOF-m96rXJFTSPdjzSBlb6Vn_Uj-_2HfHyo/s400/clase2.JPG" alt="" id="BLOGGER_PHOTO_ID_5177964261895744786" border="0" /></a><br /></div><span style=";font-family:";font-size:85%;" ><span style="color:blue;"><br /></span></span><p class="MsoNormal" style="text-align: justify;"><span style=";font-family:Verdana;font-size:85%;" >Luego de hacer los pasos antes comentados ya es hora de correr nuestros tests </span><span style=";font-family:Wingdings;font-size:85%;" ><span style="">J</span></span><span style=";font-family:Verdana;font-size:85%;" >. Lo único que deben hacer click derecho sobre nuestra clase DataManagerTest y elegir la opción “Run Test(s)”. </span></p><div style="text-align: center;"><span style="font-size:85%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjag92kqN-soxH355psFRz7dEd4G9bJCqyzxmwpEpBrsyDN7QHWXwVd7beqPaUPS23JAyECpaNDMnyYt_vYQBatNTFJWqrDtb56UxTKN-ILdKdNzNdKuNr0c2Yvsj0ckhS-GO5OGFVanyY/s1600-h/RunTestDriven.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjag92kqN-soxH355psFRz7dEd4G9bJCqyzxmwpEpBrsyDN7QHWXwVd7beqPaUPS23JAyECpaNDMnyYt_vYQBatNTFJWqrDtb56UxTKN-ILdKdNzNdKuNr0c2Yvsj0ckhS-GO5OGFVanyY/s320/RunTestDriven.JPG" alt="" id="BLOGGER_PHOTO_ID_5177960581108772050" border="0" /></a></span></div><p class="MsoNormal" style="text-align: justify;"><span style="font-size:85%;"><br /></span></p><p class="MsoNormal" style="text-align: justify;"> </p><p class="MsoNormal"><span style=";font-family:Verdana;font-size:85%;" >Cuando se ejecute nuestros tests, ustedes podrán ver la salida o el resultado de la ejecución en la ventana “output” de Visual Studio. <o:p></o:p></span></p> <p class="MsoNormal" style="text-align: justify;"><span style="font-size:85%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi63-q0EBZxTfJFHbntR7NRcnQI4XnZDK0waxGVA3yU744RF7wI54aBaZ91ouhPsUCQlbtEUDJO08Yxh_SdWDDfY6s-PBZEBhlzvAqbKGQxioTj_rjfBV_O2uC7Nk_43LXa3v3EEIR86Y/s1600-h/Test.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi63-q0EBZxTfJFHbntR7NRcnQI4XnZDK0waxGVA3yU744RF7wI54aBaZ91ouhPsUCQlbtEUDJO08Yxh_SdWDDfY6s-PBZEBhlzvAqbKGQxioTj_rjfBV_O2uC7Nk_43LXa3v3EEIR86Y/s320/Test.JPG" alt="" id="BLOGGER_PHOTO_ID_5177960967655828706" border="0" /></a></span></p><span style="font-size:85%;"><br /></span><p class="MsoNormal" style="text-align: justify;"> </p><p class="MsoNormal" style="text-align: justify;"> </p> <p class="MsoNormal"><span style=";font-family:Verdana;font-size:85%;" >Como resumen, entrego lo que he hecho en este post:<o:p><br /></o:p></span></p> <ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style=""><span style=";font-family:Verdana;font-size:85%;" >Instalar Mbunit<o:p></o:p></span></li><li class="MsoNormal" style=""><span style=";font-family:Verdana;font-size:85%;" >Instalar TestDriven<o:p></o:p></span></li><li class="MsoNormal" style=""><span style=";font-family:Verdana;font-size:85%;" >Crear proyecto del tipo biblioteca de clases<o:p></o:p></span></li><li class="MsoNormal" style=""><span style=";font-family:Verdana;font-size:85%;" >Agregar referencia de Mbunit a nuestro proyecto<o:p></o:p></span></li><li class="MsoNormal" style=""><span style=";font-family:Verdana;font-size:85%;" >Correr nuestros test usando TestDriven</span><span style=";font-family:Verdana;font-size:85%;" ><o:p><br /></o:p></span></li></ul> <p class="MsoNormal"><span style=";font-family:Verdana;font-size:10;" ><span style="font-size:85%;">Como ven, el uso de estas herramientas es bastante sencillo! Ahora solo deben usarlas!!</span><o:p></o:p></span></p> <p class="MsoNormal" style="text-align: justify;"><br /><span style=";font-family:Verdana;font-size:85%;" ><o:p></o:p></span></p>Rolando Martinez.http://www.blogger.com/profile/15040974254911347569noreply@blogger.com0tag:blogger.com,1999:blog-4239795139949600836.post-67506821348815795122008-03-10T17:37:00.000-07:002008-03-12T07:41:36.428-07:00Introducción a Mbunit<span style="font-size:85%;">Al intentar buscar material<span style=""> </span>en español de <a href="http://www.mbunit.com/">mbunit </a>no he logrado encontrar mucha información relacionada con el tema y<span style=""> </span>es por esto que he querido hacer este post. La mayor parte de lo escrito lo obtuve del sitio oficial de este sitio.</span> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p></o:p>Mbunit, es un framework de pruebas de unidad escrito originalmente por Jonathan 'Peli' de Halleux y liderado actualmente por <a href="http://blog.bits-in-motion.com/">Jeff Brown</a><br /></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;">Desde sus comienzos este proyecto ha implementado todas las características que Nunit y csUnit, pero con la extensibilidad que ellos no tienen.</span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p></o:p>Bien, una vez dada una pequeña introducción, continuare con un ejemplo muy simple de lo que podemos hacer mbunit. </span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p></o:p>La instalación</span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;">Antes de empezar deberías tener instalado lo siguiente en tu computador:<o:p><br /></o:p></span></p> <ul style="margin-top: 0cm;font-family:verdana;" type="square"><li class="MsoNormal" style="text-align: justify;"><span style="font-size:85%;">Framework .Net en sus sabores 1.1 o<span style=""> </span>2.0<span style=""> </span>(la versión 2008 aun no la tengo instalada, asi que no puedo hacer comentarios si mbunit trabaja o no sobre esta ultima versión del framework)</span></li><li class="MsoNormal" style="text-align: justify;"><span style="font-size:85%;">La actual versión de Mbunit, la cual puedes <a href="http://www.mbunit.com/Downloads.aspx">descargar </a>desde su sitio. </span></li><li class="MsoNormal" style="text-align: justify;"><span style="font-size:85%;"><a href="http://www.testdriven.net/">TestDriven</a>. Este es un complemento a Visual Studio que aunque no es necesario, es realmente útil para poder correr nuestras pruebas de unidad dentro del Visual<span style=""> </span>Studio. </span></li></ul> <p class="MsoNormal" style="margin-left: 18pt; text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;">Y? ya los instalaste?. Bueno, ahora prosigamos.<br /><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;">Escribiendo nuestros<span style=""> </span>primeros tests</span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p><br />Tal cual como dice el el manual de mbunit: escribir test no es para nada complicado es un simple grupo de Fixtures, tests y asserts.<o:p><br /></o:p></span></p> <ul style="margin-top: 0cm;font-family:verdana;" type="square"><li class="MsoNormal" style="text-align: justify;"><span style="font-size:85%;">Assert: Corresponde a una comprobación. Por ejemplo, comprobar que un valor es verdadero, que un número es mayor que otro, que un objeto es nulo, etc. </span></li><li class="MsoNormal" style="text-align: justify;"><span style="font-size:85%;">Un Test:<span style=""> </span>Es una colección de assert que intentar comprobar que una seria de acciones de tu código de producción están correctas o hacen lo que esperas. </span></li><li class="MsoNormal" style="text-align: justify;"><span style="font-size:85%;">Un Fixture es una colección de tests que por lo general están relacionados en una única clase. </span></li></ul> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;">Dentro de Mbunit exiten mas términos que poco a poco iré comentando, pero por el momento solo utilizare lo que arriba describí.</span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;">Entonces para comenzar escribiré algunos tests para la una típica clases<span style=""> </span>que ustedes ya conocen, la pila.<o:p><br /></o:p></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB">Public Class Stack<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Private elements As New ArrayList<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><o:p> </o:p><span style=""> </span>Public ReadOnly Property IsEmpty() As Boolean<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Get<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Return (elements.Count = 0)<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>End Get<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>End Property<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><o:p></o:p><span style=""> </span>Public Sub Push(ByVal element As Object)<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span><span style=""> </span>elements.Insert(0, element)<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>End Sub<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><o:p> </o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Public Function Pop() As Object<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Dim topelement As Object = Top()<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>elements.RemoveAt(0)<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Return topelement<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>End Function<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><o:p> </o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Public Function Top() As Object<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>If IsEmpty Then<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Throw New InvalidOperationException("Stack is Empty")<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>End If<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><o:p> </o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Return elements(0)<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>End Function<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;">End Class</span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;">y justo con la pila esta su compañero inseparable la StackTest</span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB">Imports MbUnit.Framework<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB">Imports MiLibreria<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><testfixture()> _<o:p></o:p></testfixture()></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB">Public Class StackTest<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><o:p> </o:p><span style=""> </span><test()> _<o:p></o:p></test()></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Public Sub IsEmptyTest()<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Dim myStack As New Stack<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Assert.IsTrue(myStack.IsEmpty)<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>End Sub<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><o:p> </o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span><test()> _<o:p></o:p></test()></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Public Sub PushTest()<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><o:p> </o:p><span style=""> </span>Dim myStack As New Stack<o:p><br /></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Assert.IsTrue(myStack.IsEmpty)<o:p><br /></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>myStack.Push(New Object)<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>myStack.Push(New Object)<o:p><br /></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Assert.IsFalse(myStack.IsEmpty)<o:p><br /></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>End Sub<o:p><br /></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span><test()> _<o:p></o:p></test()></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Public Sub PopTest()<o:p><br /></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Dim myStack As New Stack<o:p><br /></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Assert.IsTrue(myStack.IsEmpty)<o:p><br /></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>myStack.Push(New Object)<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>myStack.Pop()<o:p><br /></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Assert.IsTrue(myStack.IsEmpty)<o:p><br /></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>End Sub</span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><o:p> </o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span><test()> _<o:p></o:p></test()></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Public Sub Top()<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><o:p> </o:p><span style=""> </span>Dim myStack As New Stack<o:p><br /></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Assert.IsTrue(myStack.IsEmpty)<o:p><br /></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>myStack.Push(New Object)<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span><span style=""> </span>myStack.Pop()<o:p><br /></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>Assert.IsTrue(myStack.IsEmpty)<o:p><br /></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;"><span style="" lang="EN-GB"><span style=""> </span>End Sub<o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:78%;">End Class</span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p><br />Creo que no hay necesidad de explicar el código de la clase stack, pero si lo es para la clase stacktest. Básicamente esta clase contiene 4 métodos, donde cada uno de ellos prueba o revisa un método en particular de la clase stack (push, pop, isempty, top) . Como pueden ver en la clase cada método es etiquetado con <test()>, lo cual le permite saber a Mbunit que aquel es un método de test por lo cual debe ejecutar el código que se encuentra en su interior.</test()></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;">Junto con la etiqueta <test()>, podemos ver la etiqueta <testfixture()>, con la cual indicamos a Mbunit que esta clase es una clase de test. En Mbunit, existen muchas etiquetas, pero para simplificar este ejemplo, he querido utilizar las etiquetas básicas del mismo.</testfixture()></test()></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;">Y...¿Como configuras tu solución?</span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;">Para este post, he creado una solución con 3 proyectos, donde el proyecto de test contiene una referencia al proyecto donde se encuentra el clase stack<span style=""> </span>junto con<span style=""> </span>una referencia a MbUnit.Framework.dll ( que para mi instalación quedo en C:\Archivos de programa\MbUnit).Las referencias quedan como ves en la próxima imagen.</span></p><p class="MsoNormal" style="text-align: justify;font-family:verdana;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy96kWCbPtGr6qWf294WZdKtevUXH1YJnEdOwEYteyzlYqZ5m3RnQTUSlbqwUnPJ23coTIkipJoeys64kJKLrdkw236a1q_piBJbu9lpW4Z3pbjzFsiGFKjKgsIwqDjhU2vFlpiaz_6-I/s1600-h/solucion.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy96kWCbPtGr6qWf294WZdKtevUXH1YJnEdOwEYteyzlYqZ5m3RnQTUSlbqwUnPJ23coTIkipJoeys64kJKLrdkw236a1q_piBJbu9lpW4Z3pbjzFsiGFKjKgsIwqDjhU2vFlpiaz_6-I/s200/solucion.JPG" alt="" id="BLOGGER_PHOTO_ID_5176278903843892386" border="0" /></a></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p></span></p><span style="font-size:85%;"><o:p> </o:p></span> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;">Y... ¿Como puedes ver como corren los tests?</span></p> <p class="MsoNormal" style="text-align: justify;font-family:verdana;"><span style="font-size:85%;">Respuesta: Facil, para poder lograr esto tienes tres opciones: correr un tests en una consola, una interfaz grafica que te entrega Mbunit y por ultimo, pero no menos importante, con TestDriven.<o:p><br /></o:p></span></p> <p class="MsoNormal" face="verdana" style="text-align: justify;"><span style="font-size:85%;">Para el caso de nuestro ejemplo, lo ejecutaremos por medio de la consola (utilizando el comando MBunit.Cons.exe TestsMilibreria.dll )</span></p><p class="MsoNormal" style="text-align: justify; font-family: verdana;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbQDrN-BSiUqk2iQ7jSqg4l0WyRQNed-4583LgHXHVDguSKQ_THOzWQsVIMgbaD8GgLoR3oclCtezOzx-kisb2kHOxD1xjpmsLlcRmF_WtxGD_meOYqE3nhwZbx3UHMTid34CYlK5c-dY/s1600-h/consolerunner.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbQDrN-BSiUqk2iQ7jSqg4l0WyRQNed-4583LgHXHVDguSKQ_THOzWQsVIMgbaD8GgLoR3oclCtezOzx-kisb2kHOxD1xjpmsLlcRmF_WtxGD_meOYqE3nhwZbx3UHMTid34CYlK5c-dY/s320/consolerunner.JPG" alt="" id="BLOGGER_PHOTO_ID_5176280694845254850" border="0" /></a></p><p class="MsoNormal" style="text-align: justify; font-family: verdana;"><span style="font-size:85%;">Bueno, eso ha sido todo por hoy :D. Espero postear muchas otras cosas de Mbunit.<br /></span></p>Rolando Martinez.http://www.blogger.com/profile/15040974254911347569noreply@blogger.com1tag:blogger.com,1999:blog-4239795139949600836.post-82897309328310019612008-03-10T17:25:00.000-07:002008-03-10T17:34:39.583-07:00Presentación<p class="MsoNormal" style="font-family:verdana;"><span style="font-size:85%;">Antes de decir cualquier cosa....<o:p></o:p></span></p> <p class="MsoNormal" style="font-family:verdana;"><span style="font-size:85%;">Hola a todos los lectores de este blog, mi nombre es Rolando Martínez y soy alumno tesista de la Carrera de Ingeniería en Computación de la <a href="http://www.uach.cl/">Universidad Austral de Chile</a>. Actualmente me desempeño como desarrollador en una empresa noruega con sede en Chile llamada <a href="http://www.mercatus.no/">Mercatus</a>.<o:p></o:p></span></p> <p class="MsoNormal" style="font-family:verdana;"><span style="font-size:85%;">Uno de mis objetivos en este blog, es postear todo lo relacionado con desarrollo de software, y principalmente temas que solo han sido abordado en ingles, pero no español (o muy poco)<o:p></o:p></span></p> <p class="MsoNormal" style="font-family:verdana;"><span style="font-size:85%;"><o:p><br /></o:p></span></p> <p class="MsoNormal" style="font-family:verdana;"><span style="font-size:85%;">Saludos,<o:p></o:p></span></p> <p class="MsoNormal" style="font-family:verdana;"><span style="font-size:85%;">Rolando.</span></p>Rolando Martinez.http://www.blogger.com/profile/15040974254911347569noreply@blogger.com0