Komponententests für Private-, Internal- und Friend-Methoden
Normalerweise sind als private, internal und friend markierte Methoden außerhalb der Klasse, die diese Methoden enthält, nicht sichtbar. Die Visual Studio-Tools stellen jedoch Komponententests mit der Möglichkeit bereit, auf diese Methoden zuzugreifen, auch wenn es sich bei der Komponententestdatei um eine separate Klasse handelt.
Obwohl Sie die Komponententestdatei nicht bearbeiten müssen, um diese Methoden verwenden zu können, können Sie mit einigen Optionen auswählen, wie internal-Methoden und friend-Methoden behandelt werden. In diesem Artikel werden diese Optionen erläutert und beschrieben, was im Projekt geschieht, wenn Sie private-, internal- und friend-Methoden testen.
Tipp
Anweisungen zum Erstellen von Komponententests finden Sie unter Erstellen und Ausführen von Komponententests für vorhandenen Code.
Tipp
Die Verwendung von Accessoren ist in Visual Studio 2010 als veraltet festgelegt und nicht mehr Teil zukünftiger Versionen von Visual Studio.
Private-Methoden
Wenn Sie einen Komponententest für eine private-Methode erstellen, wird dem Testprojekt der Ordner Testverweise hinzugefügt, und diesem Ordner wird ein Accessor hinzugefügt. Auf den Accessor wird auch in der Logik der Komponententestmethode verwiesen.
Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value
Dim target As Form1_Accessor = New Form1_Accessor() ' TODO: Initialize to an appropriate value
Mit diesem Accessor kann der Komponententest private-Methoden in dem Code aufrufen, den Sie testen.
Sie können manuell einen Accessor erstellen oder einen gelöschten Accessor erneut erstellen. Klicken Sie hierzu mit der rechten Maustaste auf den Code, den Sie testen, zeigen Sie auf Privaten Accessor erstellen, und wählen Sie das Testprojekt aus, für das der Accessor erforderlich ist.
Internal-Methoden oder Friend-Methoden
Wenn Sie einen Komponententest für eine internal-Methode in C# oder eine friend-Methode in Microsoft Visual Basic erstellen, wird ein Dialogfeld angezeigt, in dem Sie auswählen können, ob auf die internal-Methoden mit dem privaten Accessor oder dem InternalsVisibleToAttribute zugegriffen werden soll.
Tipp
Möglicherweise wird das Dialogfeld nicht angezeigt, wenn das Attribut dem Projekt bereits hinzugefügt wurde.
Wenn auf die internal-Methoden mit dem InternalsVisibleToAttribute zugegriffen werden soll, wird das Attribut der Datei AssemblyInfo.cs hinzugefügt. Durch das Attribut werden die internal-Methoden im getesteten Code für das Testprojekt verfügbar. Für jedes Testprojekt, für das Sie diese Option auswählen, wird ein neues Attribut hinzugefügt.
Wenn auf die internal-Methoden mit dem privaten Accessor zugegriffen werden soll, führt dies zum gleichen Verhalten wie bei private-Methoden, das oben in diesem Artikel beschrieben wurde: Dem Testprojekt wird der Ordner Testverweise hinzugefügt, diesem Ordner wird ein Accessor hinzugefügt, und auf den Accessor wird in der Logik der Komponententestmethode verwiesen. In diesem Fall bietet der private Accessor Zugriff auf die internal-Methoden und die private-Methoden, die Sie testen.
Wenn Sie dem Projekt das InternalsVisibleToAttribute hinzugefügt haben, können Sie weiter Komponententests für internal-Methoden erstellen, auf die dann stattdessen mit dem privaten Accessor zugegriffen wird. Dies muss jedoch beim Erstellen des Komponententests erfolgen. Klicken Sie im Dialogfeld Komponententests erstellen auf Einstellungen. Deaktivieren Sie im Dialogfeld Testgenerierungseinstellungen das Kontrollkästchen InternalsVisibleTo-Attribut beachten.