¿Testeo unitario en Compact Framework ?

Seguramente esta pregunta se la han hecho muchos, pues hasta hace bien poco, la respuesta era no, no podíamos hacer UnitTest en CF, por lo menos tal y como lo conocíamos con Visual Studio 2005.


Con la llegada de Mobile Client Software Factory lo tenemos bastante fácil, incluso con la posibilidad de correr estos test directamente en el dispositivo móvil o en el emulador. Para ello usaremos las clases TestClass, TestMethod… etc… tal y como las conocemos pero ahora de las librerías que nos proporciona MCSF en los módulosTestRunner y TestHarness. Por último para correr los test en un dispositivo o emulador basta con agregar nuestra librería de test ( lógicamente un proyecto de librería para dispositivos móviles ) en el proyecto de MCSF ‘GuiTestRunner’. GuiTestRunner nos mostrará un árbol con todas las clases y métodos de Test que podremos ejecutar y ver los resultados.


Espero que os guste..


Saludos


Unai Zorrilla Castro

Microsoft Mobile Client Software Factory

Ya tenemos a nuestra disposición una nueva CTP de Mobile Client Software Factory, para el que no lo conozca MCSF es un conjunto de patrones, application blocks y guias para el desarrollo de aplicaciones móviles para ‘Linea de negocios’. Entre los application block que incluye se encuentran;


 



  • Configuration AppBlock

  • Connection AppBlock

  • Composite UI AppBlock

  • CFTest

  • DynamicResolution

 


 


Espero que os resulte de utilidad


 


 


Saludos


Unai Zorrilla Castro

Code Camp 2006

Al final un exitazo en el Code Camp de VIC 2006, gracias a todos los que hicieron el esfuerzo para que fuera posible, como no en primer lugar a Pep Lluis de Spain .Net por la gran currada que se metió el hombre, a MSDN ( Alfonso, David, Aure,Alberto y compañía) a INETA Latam ( Daniel y Nilda ) y a todos los ponentes…


Podéis ver unas fotillos en la sección de ‘Fotos’ (que original 🙂 )


 


Saludos


Unai Zorrilla Castro

SQL EveryWhere

Ya hay disponible una CTP de Sql EveryWhere para quien quiera probar la nueva versión de bases de datos para dispositivos móviles, entre las novedades destacan nuevas  funcionalidades para la replicación y sincronización de datos y la posibilidad de cruzar estas bases de datos entre plataformas como WinCe y Desktops….


 


Saludos


Unai Zorrilla Castro


MVP Compact Framework

Code Analysis

Seguro que muchos conocéis la posibilidad de Visual Studio de realizar análisis de código, tal y como hacíamos anteriormente con ‘FxCop’, pero me gustaría empezar el post poniendo de manifiesto una serie de puntos por los que considero que esta tarea es algo que deberíamos realizar continuamente.


 


¿Por qué debemos usar Code Analyzer?


 



  1. En primer lugar porque la revisión de código es parte del ciclo de vida en el desarrollo de Software.

  2. Dejar la revisión de código para el último momento es mucho más costoso en tiempo y en recursos que realizarlo como un proceso continuo.

  3. Es una forma sencilla de ‘educar’ al equipo de desarrollo viendo el porque no se deben realizar ciertas codificaciones.

  4. Fomenta el uso de buenas prácticas.

  5. Mejora la calidad y el mantenimiento del código que realizamos.

 


Por defecto con Visual Studio ya tenemos un buen número de reglas predefinidas que podemos pasar a las revisiones de nuestro código, estas reglas se pueden englobar dentro de alguna de las siguientes categorías:


 




    • Naming Conventions

    • Globalization

    • Design Rules

    • Security

    • Performance

    • Reliability

    • Portability

    • Mobility

    • Interoperability

    • Maintainability

    • Usage

 


Para activar el análisis de código en nuestros proyectos es suficiente con activar la casilla de ‘Enable Code Analysis’ en la pestaña Code Analysis de las propiedades del proyecto.


 


Una vez activado el análisis de código en cada compilación del proyecto se realizará el análisis mostrando los ‘warnings’ o errores en el caso de que el código no cumple alguna de las reglas seleccionas a pasar.


 


 


 


¿Cómo trabaja Code Analyzer?


 


Al contrario que otros analizadores de código ‘Code Analyzer’ es un analizador que trabaja sobre el ‘Manifiesto’ y el código ‘IL’ por lo que podríamos decir que es un analizador binario, por lo tanto es necesario como primer paso la compilación de los ensamblados a analizar, usa ‘Instrospección’ no ‘Reflexión’ por lo tanto no es necesario para el análisis cargar en el ‘Runtime’ los ensamblados ni bloquearlos para realizar el análisis, esto es una ventaja respecto a la ‘Reflexión’ y encima es un proceso mucho más óptimo que la Reflexión.


 


¿Puedo crear mis propias reglas en Code Analyzer?


 


Efectivamente es posible crear reglas propias de empresa o grupos de trabajo y que estas mismas se integren perfectamente en Visual Studio 2005, me gustaría comentar que esto no está soportado por Microsoft si bien existen unos cuantos enlaces de los que nos podemos descargar ejemplos de reglas para Code Analyzer.


 


 


Creando una regla personalizada para Code Analyzer


 


Objetivos:


 


Analizar las propiedades de ‘Solo escritura’. Si bien esta regla es más que discutible, no la toméis como una norma, es un ejemplo sencillo de realizar.


 


Pasos:


 



  1. Creamos un proyecto de librería de clases

  2. Agregamos las referencias necesarias para trabajar con Code Analyzer


    1. FxCopSdk.dll

    2. FxCopCommon.dll

    3. Microsoft.Cci.dll

Situadas en el directorio de instalación de Visual Studio 2005 en          


  Team ToolsStatic Analysis ToolsFxCop


     



Una vez agregadas las referencias para crear una regla únicamente tenemos que heredar de la clase de BaseInstrospectionRule  que tenemos en Microsoft.FxCop.Sdk.Instrospection


 


 


public class WriteOnlyPropertyRule


        : BaseIntrospectionRule // necesario para crear una regla de FxCop


    {


        //El resource de BaseInstrospectionRule es el [NombreEnsamblado].[Nombre Archivo XMl]


        public WriteOnlyPropertyRule()


            : base(«WriteOnlyPropertyRule», » GeeksDemo.GeeksDemo.RuleData», typeof(SlaterLabsRules.WriteOnlyPropertyRule).Assembly)


        {


          


        }


 


        public override ProblemCollection Check(Member member)


        {


            Property property = member as Property;


            if (property == null) return null;


 


            if (property.GetPropertyInfo().CanWrite && !property.GetPropertyInfo().CanRead)


            {


                //ie, si la propiedad es de solamente escritura.


 


                //En el Resolutions del Xml hay una serie de parametros {0} {1} que podremos rellenar para cada caso mediante


                //este array de strings


                string[] args = { property.Name.Name };


 


                base.Problems.Add(new Problem(GetResolution(args)));


 


            }


 


            return base.Problems;


            //return base.Check(member);


        }


 


        public override TargetVisibilities TargetVisibility


        {


            get


            {


                return TargetVisibilities.All;


            }


        }


    }


 


 


El  siguiente paso es el de incluir como recurso un archivo XML con la información de la regla, el nombre de este archivo XML debe de estar en consonancia con el parámetro de resource que hemos incluido en la construcción de BaseInstrospectionRule de nuestra regla, para ver como se construyen estos archivos XML podemos usar ‘Reflector’ para ver las reglas que tenemos por defecto en el directorio de reglas de Code Analyzer Microsoft Visual Studio 8Team ToolsStatic Analysis ToolsFxCopRules. En nuestro ejemplo el archivo XML como recurso es el siguiente:


 


<?xml version=«1.0« encoding=«utf-8« ?>


<Rules FriendlyName=«Geeks Rules«>


      <Rule TypeName=«WriteOnlyPropertyRule« Category=«GeeksDemo.Coding« CheckId=«SL0001«>


            <Name>No Propiedades de solo escritura</Name>


            <Description>Acerca de las propiedades de solo escritura.</Description>


            <Url>http://www.geeks.com</Url>


            <Resolution>Elimina el método Set de la propiedad ‘{0}’</Resolution>


            <Email>unai@plainconcepts.com</Email>


            <MessageLevel Certainty=«99«>Warning</MessageLevel>


            <FixCategories>NonBreaking</FixCategories>


            <Owner/>


      </Rule>


</Rules>


 


 


 


Despegando nuestra regla


 


El proceso de despliegue de la regla es muy sencillo basta con situar nuestro ensamblado en el directorio de reglas que comentamos en el paso anterior para que ya podamos hacer uso de ellas.


 


 


Conclusiones


 


Espero que os haya resultado de interés este Post y os animo a que propongamos y creemos nuevas reglas.


 


 

Manejo de Sql Server Mobile en pc

Ya son bastantes las preguntas que surgen sobre este tema, incluso las ‘mentiras’ que de el se comentan. En muchos de los foros de desarrollo para dispositivos móviles, aunque estos sean pocos, se habla de la posibilidad de manejar bases de datos de dispositivos móviles en el pc, muchas de las respuestas dicen que esto no es posible o bien q hay que usar productos de terceros y quien dice que si se puede no explica como realizar dicha tarea. Pues bien como veremos en el post basta con seguir unos simples pasos para comprobar como si se pueden usar bases de datos de Sql Server Mobile desde un pc.


 


Pasos:


 



  1. El primer paso será el de agregar la referencia a System.Data.SqlServerCe.dll:


    1. Ir a Agregar referencia

    2. Buscarla en Program FilesMicrosoft Visual Studio 8Common7IDE

  2. Copiar las siguientes librerías al lado del ejecutable a crear


    1. sqceca30.dll

    2. sqlcecompact30.dll

    3. sqlceer30[lenguaje].dll

    4. sqlceme.dll

    5. sqlceoledb30.dll

    6. sqlceqp30.dll

    7. sqlcese30.dll

 


En este momento ya estamos en disposición de manejar cualquier base de datos de Sql Server Mobile desde nuestro pc de igual forma que si estuviéramos haciéndolo en un dispositivo móvil sin necesidad de acompañar la aplicación con ningún tipo de distribución.


 


 


 


¿Qué valor nos proporciona esto? A mi se me ocurren muchas e interesantes tareas que puedo hacer gracias a esto ¿y a vosotros?, espero vuestros comentarios.


 


Saludos


Unai

Mensaje de error !! Es necesario instalar CF 1.0 !!

Últimamente me están llegando bastantes cuestiones relacionadas con un mensaje de error de Visual Studio 2005 cuando se intenta crear y depurar una aplicación de CF1.0 en VS 2005.


Para intentar solucionar este problema es necesario realizar los siguientes pasos:



  1. Cierra Visual Studio 2005
  2. Busca en el DVD de instalación la ruta WCUNETCF , en esta ruta selecciona y ejecuta el MSI de CF 1.0

Con esto se solucionará el problema


 


 


Un Saludo


Unai Zorrilla Castro

Emulador con MSFP

Microsoft acaba de sacar a la luz un nueva imagen de emulador de dispositivos móviles que incluye el paquete de Microsoft Security Feature Pack en Windows Mobile 5.0 para que se puedan probar las nuevas funcionalidades.


Podeis descargarlo y obtener más info de


 http://www.microsoft.com/downloads/details.aspx?FamilyID=c62d54a5-183a-4a1e-a7e2-cc500ed1f19a&DisplayLang=en


 


 


Saludos


Unai Zorrilla Castro

WiMo

Brian Cross del equipo de Windows Mobile ha creado una web muy intersante dedicada a WiMo ( Windows Mobile Robot ), pronunciado WeeMo como el bien dice en la explicación de su Web, la verdad es que a los que os guste cacharrear tanto como a mi os gustará muchísimo.


Si quereis ver algo mucho más claro podeis ver un video en Channel 9, seguro que os divierte tanto como a mi.


 


Saludos


Unai Zorrilla Castro


 

eHow-tos

El equipo de MEDUA ( Mobile and Embedded Devecies User Assistance ) acaba de publicar tres nuevos videos  sobre el desarrollo con desipositivos móviles, espero que os gusten…


MEDUA eHow-Tos


 


Saludos


Unai Zorrilla Castro


Microsoft MVP Compact Framework