Classe ClassInitializeAttribute
Identifica un metodo che contiene il codice che deve essere utilizzato prima che qualsiasi dei test hanno eseguito e allocare risorse da utilizzare in una classe di test.questa classe non può essere ereditata.
Gerarchia di ereditarietà
System.Object
System.Attribute
Microsoft.VisualStudio.TestTools.UnitTesting.ClassInitializeAttribute
Spazio dei nomi: Microsoft.VisualStudio.TestTools.UnitTesting
Assembly: Microsoft.VisualStudio.QualityTools.UnitTestFramework (in Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)
Sintassi
'Dichiarazione
<AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple := False)> _
Public NotInheritable Class ClassInitializeAttribute _
Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = false)]
public sealed class ClassInitializeAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Method, AllowMultiple = false)]
public ref class ClassInitializeAttribute sealed : public Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = false)>]
type ClassInitializeAttribute =
class
inherit Attribute
end
public final class ClassInitializeAttribute extends Attribute
Il tipo ClassInitializeAttribute espone i seguenti membri.
Costruttori
Nome | Descrizione | |
---|---|---|
ClassInitializeAttribute | Inizializza una nuova istanza di ClassInitializeAttribute classe. |
In alto
Proprietà
Nome | Descrizione | |
---|---|---|
TypeId | Quando implementato in una classe derivata, ottiene un identificatore univoco per questa Attribute. (Ereditato da Attribute) |
In alto
Metodi
Nome | Descrizione | |
---|---|---|
Equals | Infrastruttura. Restituisce un valore che indica se l'istanza è uguale a un oggetto specificato. (Ereditato da Attribute) | |
GetHashCode | Restituisce il codice hash per l'istanza. (Ereditato da Attribute) | |
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) | |
IsDefaultAttribute | Una volta sottoposto a override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute) | |
Match | Una volta sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute) | |
ToString | Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
In alto
Implementazioni esplicite dell'interfaccia
Nome | Descrizione | |
---|---|---|
_Attribute.GetIDsOfNames | Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch. (Ereditato da Attribute) | |
_Attribute.GetTypeInfo | Recupera le informazioni sui tipi per un oggetto, che può essere utilizzato per ottenere informazioni sul tipo per un'interfaccia. (Ereditato da Attribute) | |
_Attribute.GetTypeInfoCount | Recupera il numero di interfacce di informazioni sui tipi che un oggetto garantisce (0 o 1). (Ereditato da Attribute) | |
_Attribute.Invoke | Fornisce l'accesso a proprietà e metodi esposti da un oggetto. (Ereditato da Attribute) |
In alto
Note
Se eseguito in un test di carico, il metodo contrassegnato con l'attributo verrà eseguito una sola volta e tutte le operazioni di inizializzazione esegue verranno applicate a test intero.Se è necessario fare una volta le operazioni di inizializzazione per ogni iterazione dell'utente virtuale nei test, utilizzare TestInitializeAttribute.
L'ordine dei metodi verranno eseguiti è:
metodi contrassegnati con AssemblyInitializeAttribute.
metodi contrassegnati con ClassInitializeAttribute.
metodi contrassegnati con TestInitializeAttribute.
metodi contrassegnati con TestMethodAttribute.
Solo un metodo in una classe può essere decorati con l'attributo.
Importante |
---|
Questo attributo non deve essere utilizzato sugli unit test ASP.NET, ovvero, i test con [HostType("ASP.NET")] attributo.A causa della natura indipendente dallo stato di IIS e ASP.NET, un metodo decorato con questo attributo può essere chiamato più volte per ogni esecuzione di test. |
Questo attributo può essere specificato in un metodo.Solo un'istanza di questo attributo può essere applicato a un metodo.
per ulteriori informazioni su come utilizzare gli attributi, vedere Estensione di metadati mediante attributi.
Esempi
Negli esempi riportati gli attributi di inizializzazione e pulizia utilizzati per indicare i metodi devono essere eseguiti nel motore di test a stadi diversi di test.
I primi esempi di codice contiene una classe e il metodo da testare.Per eseguire questo esempio, creare un progetto libreria di classi e sostituire il codice nel seguente esempio.
using System;
namespace SampleClassLib
{
public class DivideClass
{
public static int DivideMethod(int denominator)
{
return (2 / denominator);
}
}
}
Imports System
Namespace SampleClassLib
Public Class DivideClass
Shared Function DivideMethod(ByVal denominator As Integer) As Integer
Return 2 \ denominator
End Function
End Class
End Namespace
L'esempio seguente contiene il codice per il test DivideMethod() trovato negli esempi di codice precedenti.Creare un progetto di test e inserire il seguente codice in un documento di classe di test.Aggiungere i riferimenti appropriati al progetto.Questo codice contiene gli attributi che consentono di controllare l'ordine di esecuzione di inizializzazione e pulizia per il metodo, la classe e assembly.
In particolare, si noti l'attributo di ClassInitialize il metodo di ClassInit().
using Microsoft.VisualStudio.TestTools.UnitTesting;
using SampleClassLib;
using System;
using System.Windows.Forms;
namespace TestNamespace
{
[TestClass()]
public sealed class DivideClassTest
{
[AssemblyInitialize()]
public static void AssemblyInit(TestContext context)
{
MessageBox.Show("AssemblyInit " + context.TestName);
}
[ClassInitialize()]
public static void ClassInit(TestContext context)
{
MessageBox.Show("ClassInit " + context.TestName);
}
[TestInitialize()]
public void Initialize()
{
MessageBox.Show("TestMethodInit");
}
[TestCleanup()]
public void Cleanup()
{
MessageBox.Show("TestMethodCleanup");
}
[ClassCleanup()]
public static void ClassCleanup()
{
MessageBox.Show("ClassCleanup");
}
[AssemblyCleanup()]
public static void AssemblyCleanup()
{
MessageBox.Show("AssemblyCleanup");
}
[TestMethod()]
[ExpectedException(typeof(System.DivideByZeroException))]
public void DivideMethodTest()
{
DivideClass.DivideMethod(0);
}
}
}
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports SampleClassLib2.SampleClassLib
Imports System
Imports System.IO
Imports System.Windows.Forms
Namespace TestNamespace
<TestClass()> _
Public NotInheritable Class DivideClassTest
<AssemblyInitialize()> _
Public Shared Sub AssemblyInit(ByVal context As TestContext)
MsgBox("AssemblyInit " + context.TestName)
End Sub 'AssemblyInit
<ClassInitialize()> _
Public Shared Sub ClassInit(ByVal context As TestContext)
MsgBox("ClassInit " + context.TestName)
End Sub 'ClassInit
<TestInitialize()> _
Public Sub Initialize()
MsgBox("TestMethodInit")
End Sub
<TestCleanup()> _
Public Sub Cleanup()
MsgBox("TestMethodCleanup")
End Sub
<ClassCleanup()> _
Public Shared Sub ClassCleanup()
MsgBox("ClassCleanup")
End Sub
<AssemblyCleanup()> _
Public Shared Sub AssemblyCleanup()
MsgBox("AssemblyCleanup")
End Sub
<TestMethod()> _
<ExpectedException(GetType(System.DivideByZeroException))> _
Public Sub DivideMethodTest()
DivideClass.DivideMethod(0)
End Sub
End Class
End Namespace
Codice thread safe
Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.
Vedere anche
Riferimenti
Spazio dei nomi Microsoft.VisualStudio.TestTools.UnitTesting