Exemplarische Vorgehensweise: Überprüfen von SharePoint-Code mithilfe von Komponententests

Komponententests ermöglichen es Ihnen, den Vorgang des Codes genauer zu debuggen und zu überprüfen. In dieser exemplarischen Vorgehensweise wird veranschaulicht, wie Komponententests in eine SharePoint-Anwendung integriert werden. Während diese exemplarische Vorgehensweise einen bestimmten SharePoint-Projekttyp verwendet, kann ein beliebiger Typ des SharePoint-Codeprojekts mit Komponententests getestet werden.

Beginnen Sie mit einem Standardlistendefinitionsprojekt mit einer Listeninstanz und einem Ereignisempfänger, und fügen Sie dem Ereignisempfängercode, mit dem SharePoint eine Ankündigungsliste hinzugefügt wird, anschließend einen Komponententest hinzu. Die Erstellung der Ankündigung bewirkt, dass der Ereignisempfänger die Ankündigung ändert. Der Komponententest überprüft, ob die Ankündigung wie erwartet geändert wurde und meldet die Ergebnisse zurück.

In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:

  • Erstellen einer Listendefinition mit einer Listeninstanz mithilfe der Listendefinitionsprojektvorlage.

  • Erstellen eines Ereignisempfängers mithilfe der Ereignisempfängerprojektvorlage.

  • Hinzufügen und Ändern von Listenelementen mithilfe von Code.

  • Hinzufügen eines Komponententests zu einem SharePoint-Projekt.

  • Ausführen des Komponententests in einem SharePoint-Projekt.

  • Anzeigen und Interpretieren der Komponententestergebnisse.

    Tipp

    Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Die von Ihnen verwendete Visual Studio-Edition und die Einstellungen legen diese Elemente fest. Weitere Informationen finden Sie unter Arbeiten mit Einstellungen.

Vorbereitungsmaßnahmen

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:

Erstellen eines Listendefinitionsprojekts

Erstellen Sie zuerst ein Listendefinitionsprojekt mit einer Listeninstanz.

So erstellen Sie ein Listendefinitionsprojekt

  1. Starten Sie Visual Studio 2010 mit der Option Als Administrator ausführen.

  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt. Das Dialogfeld Neues Projekt wird angezeigt.

  3. Wählen Sie am oberen Rand des Dialogfelds Neues Projekt in der Dropdownliste .NET Framework 3.5 aus.

  4. Erweitern Sie im Dialogfeld Neues Projekt den Knoten SharePoint unter der gewünschten Sprache, und wählen Sie anschließend den Knoten 2010 aus.

  5. Wählen Sie im Bereich Vorlagen die Vorlage Listendefinition aus, und klicken Sie dann auf OK.

    Der Assistent zum Anpassen von SharePoint wird angezeigt. Verwenden Sie den Standardnamen für das Projekt ListDefinitionProject1. Mit diesem Assistenten können Sie die Website, die Sie zum Debuggen des Projekts verwenden, sowie die Vertrauensebene der Projektmappe auswählen.

  6. Wählen Sie Als Farmlösung bereitstellen aus, und klicken Sie dann auf Weiter. ALM-Funktionen funktionieren nur mit Farmlösungen.

  7. Klicken Sie im Fenster Listendefinitionseinstellungen auswählen auf Fertig stellen, um die Standardwerte zu übernehmen. Daraufhin wird eine Ankündigungenlistendefinition erstellt und SharePoint eine Instanz dieser Liste hinzugefügt.

Hinzufügen eines Ereignisempfängers zur Listendefinition

Fügen Sie der Listendefinition einen Ereignisempfänger hinzu, um auf an der Listendefinition vorgenommene Änderungen zu reagieren.

So fügen Sie dem Projekt einen Ereignisempfänger hinzu

  1. Klicken Sie im Projektmappen-Explorer auf die Listendefinition.

  2. Klicken Sie im Menü Projekt auf Neues Element hinzufügen.

  3. Erweitern Sie im Dialogfeld Neues Element hinzufügen im Bereich Installierte Vorlagen den Knoten SharePoint, und klicken Sie dann auf 2010.

  4. Wählen Sie in der Liste der SharePoint-Vorlagen die Option Ereignisempfänger aus, und klicken Sie dann auf Hinzufügen. Verwenden Sie den Standardnamen für das Projektelement EventReceiver1.

  5. Behalten Sie im Fenster Ereignisempfängereinstellungen auswählen den Ereignisempfängertyp als Listenelementereignisse bei, und verwenden Sie die Standardereignisquelle.

  6. Wählen Sie in der Liste Die folgenden Ereignisse behandeln die Option Ein Element wird hinzugefügt aus, und klicken Sie dann auf Fertig stellen. Daraufhin wird ein Ereignishandler erstellt, der auslöst, wenn eine Ankündigung erstellt wird.

  7. Ersetzen Sie die ItemAdding-Methode der EventReceiver1-Klasse durch folgenden Code:

    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. Fügen Sie einen Haltepunkt in der properties.AfterProperties-Zeile hinzu. Dieser wird später beim Testen des Ereignisempfängers verwendet.

  9. Erstellen Sie das Projekt.

Hinzufügen eines Komponententests zum Ereignisempfänger

Fügen Sie dem Ereignisempfänger einen Komponententest hinzu, um zu testen, ob er ordnungsgemäß funktioniert.

So fügen Sie dem Ereignisempfänger einen Komponententest hinzu

  1. Klicken Sie im Menü Test auf Neuer Test. Das Dialogfeld Neuen Test hinzufügen wird angezeigt.

  2. Klicken Sie unter Vorlagen auf Komponententest-Assistent.

  3. Wählen Sie in der Dropdownliste Zu Testprojekt hinzufügen entweder Neues Visual C#-Testprojekt erstellen oder Neues Visual Basic-Testprojekt erstellen aus, und klicken Sie dann auf OK. Verwenden Sie für dieses Beispiel den Standardnamen für das Testprojekt TestProject1.

  4. Das nächste Fenster zeigt eine Strukturansicht des Listendefinitionsprojekts an. Erweitern Sie die Knoten in der Strukturansicht, bis Sie die ItemAdding-Methode sehen.

  5. Aktivieren Sie das Kontrollkästchen neben der ItemAdding-Methode, und klicken Sie dann auf OK.

    Es wird ein neues Projekt mit dem Namen TestProject1 mit einem Codemodul namens EventReceiver1Test erstellt. Das Codemodul enthält eine ItemAddingTest-Methode, die verwendet wird, um die entsprechende ItemAdding-Methode zu testen.

  6. Markieren Sie das Testprojekt im Projektmappen-Explorer, und klicken Sie dann im Menü Ansicht auf Eigenschaftenseiten.

  7. Klicken Sie in den Eigenschaftenseiten für das Testprojekt auf die Registerkarte Anwendung, und wählen Sie dann in der Dropdownliste Zielframework das Zielframework .NET Framework 3.5 aus.

    Das Dialogfeld Änderung des Zielframeworks wird angezeigt, in dem Sie gefragt werden, ob Sie das Zielframework ändern möchten. Klicken Sie auf Ja. Dadurch wird sichergestellt, dass die .NET Framework-Version, die vom Testprojekt verwendet wurde, mit der vom SharePoint-Projekt verwendeten Version übereinstimmt.

  8. Fügen Sie oben in der EventReceiver1Test-Klasse den folgenden Code hinzu:

    ' 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. Ersetzen Sie die ItemAddingTest-Methode durch folgenden Code:

    <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());
        }
    }
    

    Durch diesen Code wird die SharePoint-Website geöffnet und eine neue Ankündigung hinzugefügt. Wenn die neue Ankündigung zu SharePoint hinzugefügt wird, wird der Code im Ereignisempfänger ausgelöst und der Ankündigung ein Kommentar hinzugefügt. Der Code im Komponententest überprüft, ob der Ereignisempfänger der Ankündigung den Kommentar durch Aufrufen von Assert.AreEqualhinzugefügt hat.

  10. Wählen Sie "TestProject1" im Projektmappen-Explorer aus, zeigen Sie im Menü Test auf Testeinstellungen bearbeiten, und klicken Sie dann auf Lokal (local.testsettings). Das Fenster Testeinstellungen wird angezeigt.

  11. Klicken Sie im linken Bereich des Fensters Testeinstellungen auf Hosts, und wählen Sie dann in der Dropdownliste Tests als 32-Bit- oder 64-Bit-Prozess ausführen den Eintrag Tests als 64-Bit-Prozess auf einem 64-Bit Computer ausführen aus. Klicken Sie auf Übernehmen und anschließend auf Schließen.

    Diese Einstellung ist notwendig für das Testen von SharePoint-Anwendungen mit 64-Bit.

Bereitstellen der Projektmappe

Stellen Sie nach Erstellen der SharePoint-Lösung und des Komponententests die SharePoint-Lösung bereit, und ändern Sie dann das Startprojekt. Da zum Ausführen des Komponententests das SharePoint-Projekt auf dem SharePoint-Server vorhanden sein muss, stellen Sie das SharePoint-Projekt bereit. Ändern Sie nach Bereitstellen des Projekts das Startprojekt in den Komponententest, um das Debuggen mit F5 zu aktivieren.

So stellen Sie die Projektmappe bereit

  1. Klicken Sie im Menü Erstellen auf Projektmappe bereitstellen, um die SharePoint-Lösung bereitzustellen.

  2. Klicken Sie mit der rechten Maustaste auf TestProject1, und wählen Sie Als Startprojekt festlegen aus.

Ausführen des Komponententests

Da die SharePoint-Lösung jetzt vorhanden und der Komponententest bereit ist, führen Sie den Komponententest aus, um zu überprüfen, ob der Ereignisempfänger ordnungsgemäß funktioniert.

So führen Sie den Komponententest aus

  1. Drücken Sie zum Ausführen des Testprojekts F5.

    Im Testcode wird eine neue Ankündigung auf der SharePoint-Website erstellt und der Ereignisempfänger ausgelöst.

  2. Wenn der Haltepunkt erreicht ist, drücken Sie F5, um fortzufahren.

    Diese Zeile im Ereignisempfänger fügt der neuen Ankündigung einen Kommentar hinzu. Der Testcode überprüft dann, ob der Kommentar in der Ankündigung vorhanden ist.

  3. Das Fenster Testergebnisse wird angezeigt und gibt an, dass ItemAddingTest übergeben wurde. Doppelklicken Sie in der Liste auf ItemAddingTest, um die Testdetails anzuzeigen.

    Die Testergebnisdetails enthalten Informationen, z. B. den Namen des Tests, die Start- und Endzeit und die Testdauer.

Siehe auch

Konzepte

Aufbau eines Komponententests

Erstellen und Ausführen von Komponententests für vorhandenen Code

Debuggen mit IntelliTrace

Weitere Ressourcen

Überprüfen und Debuggen von SharePoint-Code mithilfe von ALM-Funktionen

Exemplarische Vorgehensweise: Debuggen einer SharePoint-Anwendung mithilfe von IntelliTrace