Tutorial: Comprobar código de SharePoint mediante pruebas unitarias

Las pruebas unitarias permiten depurar el código y comprobar su funcionamiento con más precisión. En este tutorial se muestra cómo incorporar pruebas unitarias a una aplicación de SharePoint. Aunque este tutorial usa un tipo de proyecto de SharePoint concreto, se puede probar cualquier tipo de proyecto de código de SharePoint mediante las pruebas unitarias.

Comience con un proyecto de definición de lista estándar con una instancia de lista y un receptor de eventos y, a continuación, agregue una prueba unitaria al código del receptor de eventos que agregue una lista de anuncios a SharePoint. La creación del anuncio hace que el receptor de eventos modifique el anuncio. La prueba unitaria comprueba si el anuncio se modificó tal como se esperaba y notifica los resultados.

En este tutorial se muestran las tareas siguientes:

  • Crear una definición de lista con una instancia de lista mediante la plantilla de proyecto Definición de lista.

  • Crear un receptor de eventos mediante la plantilla de proyecto Receptor de eventos.

  • Agregar y modificar elementos de la lista mediante código.

  • Agregar una prueba unitaria a un proyecto de SharePoint.

  • Ejecutar la prueba unitaria en un proyecto de SharePoint.

  • Ver e interpretar los resultados de la prueba unitaria.

    Nota

    Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que tenga y la configuración que esté utilizando determinan estos elementos. Para obtener más información, vea Trabajar con valores de configuración.

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

Crear un proyecto de definición de lista

Primero, cree un proyecto de definición de lista con una instancia de lista.

Para crear un proyecto de definición de lista

  1. Inicie Visual Studio 2010 con la opción Ejecutar como administrador.

  2. En el menú Archivo, elija Nuevo y haga clic en Proyecto. Aparecerá el cuadro de diálogo Nuevo proyecto.

  3. En la parte superior del cuadro de diálogo Nuevo proyecto, seleccione .NET Framework 3.5 en la lista desplegable.

  4. En el cuadro de diálogo Nuevo proyecto, expanda el nodo SharePoint bajo el lenguaje que desea usar y seleccione el nodo 2010.

  5. En el recuadro Plantillas, seleccione Definición de lista y, a continuación, haga clic en Aceptar.

    Aparece el Asistente para la personalización de SharePoint. Use el nombre del proyecto predeterminado, ListDefinitionProject1. Este asistente permite seleccionar el sitio que se va a usar para depurar el proyecto, así como el nivel de confianza de la solución.

  6. Seleccione Implementar como solución de granja de servidores y, a continuación, haga clic en Siguiente. Las características de ALM solo funcionan con las soluciones de granja de servidores.

  7. En la ventana Elegir configuración de definición de lista, haga clic en Finalizar para aceptar los valores predeterminados. Así se crea una definición de lista de anuncios y se agrega una instancia de esa lista a SharePoint.

Agregar un receptor de eventos a la definición de lista

Agregue un receptor de eventos a la definición de lista para poder responder a los cambios realizados en la definición de lista.

Para agregar un receptor de eventos al proyecto

  1. Haga clic en la definición de lista en el Explorador de soluciones.

  2. En el menú Proyecto, haga clic en Agregar nuevo elemento.

  3. En el cuadro de diálogo Agregar nuevo elemento, en el recuadro Plantillas instaladas, expanda el nodo SharePoint y, a continuación, haga clic en 2010.

  4. En la lista de plantillas de SharePoint, seleccione Receptor de eventos y, a continuación, haga clic en Agregar. Use el nombre de elemento de proyecto predeterminado, EventReceiver1.

  5. En la ventana Elegir configuración del receptor de eventos, deje el tipo de receptor de eventos como Eventos de elementos de lista y use el origen de eventos predeterminado.

  6. En la lista Controlar los siguientes eventos, active Se va a agregar un elemento y, a continuación, haga clic en Finalizar. Esto crea un controlador de eventos que se activa cuando se crea un anuncio.

  7. Reemplace el método ItemAdding de la clase EventReceiver1 por el código siguiente.

    Public Overrides Sub ItemAdding(properties As SPItemEventProperties)
        properties.AfterProperties("Body") = "Note added by event receiver"
        MyBase.ItemAdding(properties)
    End Sub
    
    public override void ItemAdding(SPItemEventProperties properties)
    {
        properties.AfterProperties["Body"] = "Note added by event receiver"; 
        base.ItemAdding(properties);
    }
    
  8. Agregue un punto de interrupción en la línea properties.AfterProperties. Después se usa esto al probar el receptor de eventos.

  9. Compile el proyecto.

Agregar una prueba unitaria al receptor de eventos

Para comprobar si el receptor de eventos funciona correctamente, agréguele una prueba unitaria.

Para agregar una prueba unitaria al receptor de eventos

  1. En el menú Prueba, haga clic en Nueva prueba. Aparecerá el cuadro de diálogo Agregar nueva prueba.

  2. En Plantillas, haga clic en Asistente para pruebas unitarias.

  3. En la lista desplegable Agregar a proyecto de prueba, seleccione Crear un nuevo proyecto de prueba de Visual C# o Crear un nuevo proyecto de prueba de Visual Basic y, a continuación, haga clic en Aceptar. En este ejemplo, use el nombre del proyecto de prueba predeterminado, TestProject1.

  4. La ventana siguiente muestra una vista de árbol del proyecto de definición de lista. Expanda los nodos de la vista de árbol hasta que aparezca el método ItemAdding.

  5. Active la casilla situada junto al método ItemAdding y, a continuación, haga clic en Aceptar.

    Así se crea un nuevo proyecto denominado TestProject1 con un módulo de código denominado EventReceiver1Test. El módulo de código contiene un método, ItemAddingTest, que se usa para probar el método ItemAdding correspondiente.

  6. Resalte el proyecto de prueba en el Explorador de soluciones y, a continuación, haga clic en Páginas de propiedades en el menú Ver.

  7. En las páginas de propiedades del proyecto de prueba, haga clic en la pestaña Aplicación y, a continuación, seleccione .NET Framework 3.5 en la lista desplegable Versión de .NET Framework de destino.

    Aparece el cuadro de diálogo Cambio de versión de .NET Framework de destino, que le pregunta si desea cambiar la versión de .NET Framework de destino. Haga clic en . Esto asegura que la versión de .NET Framework utilizada en el proyecto de prueba coincide con la empleada en el proyecto de SharePoint.

  8. Agregue el siguiente código al comienzo de la clase EventReceiver1Test.

    ' SharePoint site/subsite.
    Private siteUrl As String = "https://localhost"
    Private webUrl As String = "/"
    
    // SharePoint site/subsite.
    private string siteUrl = "https://localhost";
    private string webUrl = "/";
    
  9. Reemplace el método ItemAddingTest por el código siguiente.

    <TestMethod()> _
    Public Sub ItemAddingTest()
        Try
            Using site As New SPSite(siteUrl)
                Using web As SPWeb = site.OpenWeb(webUrl)
                    ' Reference the list instance.
                    Dim mySite As SPList = web.Lists("ListDefinitionProject1 - ListInstance1")
    
                    ' Add a new announcement to the Announcements list.
                    Dim listItems As SPListItemCollection = mySite.Items
                    Dim item As SPListItem = listItems.Add()
                    item("Title") = "A Unit Test Announcement"
                    item("Expires") = "1/1/2099"
                    item.Update()
    
                    ' Test whether the event receiver added the text to the announcement.
                    Dim existingItem As SPListItem = listItems(0)
                    Assert.AreEqual(existingItem("Body").ToString().Contains("Note added by event receiver"), True, "Body passed!")
                End Using
    
            End Using
    
        Catch e As Exception
            Console.WriteLine("Error: " & e.ToString())
        End Try
    End Sub
    
    public void ItemAddingTest()
    {
        try
        {
            using (SPSite site = new SPSite(siteUrl))
            {
                using (SPWeb web = site.OpenWeb(webUrl))
                {
                    // Reference the list instance.
                    SPList mySite = web.Lists["ListDefinitionProject1 - ListInstance1"];
    
                    // Add a new announcement to the Announcements list.
                    SPListItemCollection listItems = mySite.Items;
                    SPListItem item = listItems.Add();
                    item["Title"] = "A Unit Test Announcement";
                    item["Expires"] = "1/1/2099";
                    item.Update();
    
                    // Test whether the event receiver added the text to the announcement.
                    SPListItem existingItem = listItems[0];
                    Assert.AreEqual(existingItem["Body"].ToString().Contains("Note added by event receiver"), true, "Test succeeded!");                                               
                }
            }
    
        }
    
        catch (Exception e)
        {
            Console.WriteLine("Error: " + e.ToString());
        }
    }
    

    Este código abre el sitio de SharePoint y agrega un nuevo anuncio. Cuando el nuevo anuncio se agrega a SharePoint, se activa el código del receptor de eventos y se agrega un comentario al anuncio. El código de la prueba unitaria comprueba si el receptor de eventos agregó el comentario al anuncio mediante una llamada a Assert.AreEqual.

  10. Seleccione TestProject1 en el Explorador de soluciones, elija Editar configuraciones de pruebas en el menú Prueba y, a continuación, haga clic en Local (local.testsettings). Aparece la ventana Configuración de pruebas.

  11. En el recuadro izquierdo de la ventana Configuración de pruebas, haga clic en Hosts y, a continuación, seleccione Ejecutar pruebas en proceso de 64 bits en un equipo de 64 bits en la lista desplegable Ejecutar pruebas en procesos de 32 bits o 64 bits. Haga clic en Aplicar y, a continuación, en Cerrar.

    Este valor es necesario para probar las aplicaciones de SharePoint, que son de 64 bits.

Implementar la solución

Después de crear la solución y la prueba unitaria de SharePoint, implemente la solución de SharePoint y, a continuación, cambie el proyecto de inicio. La prueba unitaria requiere que el proyecto de SharePoint esté en contexto en el servidor de SharePoint antes de comprobarlo, de modo que se debe implementar el proyecto de SharePoint. Después de implementar el proyecto, cambie el proyecto de inicio a la prueba unitaria para habilitar la depuración con F5.

Para implementar la solución

  1. Haga clic en Implementar solución en el menú Generar para implementar la solución de SharePoint.

  2. Haga clic con el botón secundario en TestProject1 y seleccione Establecer como proyecto de inicio.

Ejecutar la prueba unitaria

Ahora que la solución de SharePoint está en contexto y la prueba unitaria está lista, ejecute la prueba unitaria para comprobar si el receptor de eventos funciona correctamente.

Para ejecutar la prueba unitaria

  1. Presione F5 para ejecutar el proyecto de prueba.

    El código de prueba crea un nuevo anuncio en el sitio de SharePoint, lo que activa el receptor de eventos.

  2. Cuando se encuentre el punto de interrupción, presione F5 para continuar.

    Esta línea del receptor de eventos agrega un comentario al nuevo anuncio. A continuación, el código de prueba comprueba si el comentario existe en el anuncio.

  3. Aparece la ventana Resultados de pruebas, que especifica que se pasó ItemAddingTest. Haga doble clic en ItemAddingTest en la lista para ver los detalles de las pruebas.

    Los detalles de los resultados de las pruebas incluyen información como el nombre de la prueba, las horas de inicio y finalización, y la duración de las pruebas.

Vea también

Conceptos

Anatomía de las pruebas unitarias

Crear y ejecutar pruebas unitarias para código existente

Depurar con IntelliTrace

Otros recursos

Comprobar y depurar código de SharePoint usando características de ALM

Tutorial: Depurar una aplicación de SharePoint mediante IntelliTrace