2011-12-15 17 views
11

Ho trovato la classe TestExecution, che espone un gruppo di eventi che sarebbero incredibilmente utili. Tuttavia, non riesco a trovare un riferimento ad esso diverso dalla documentazione di MSDN e la documentazione non fornisce alcun suggerimento per quanto riguarda il modo in cui viene utilizzato o come ottenere un riferimento a un'istanza durante un'esecuzione di test.Qual è lo scopo della classe TestExecution in MSTest?

L'aspetto con .NET Reflector non è stato utile - TestExecution è implementato da un'altra classe, UnitTestExecution, che è interna. Non sono riuscito a trovare altri riferimenti a nessuna classe in nessuna delle librerie Microsoft.VisualStudio.QualityTools. *, Né sotto forma di ulteriori implementazioni né riferimenti come tipi di proprietà in altre classi.

Come posso accedere a questi eventi?

+0

Sembra una classe astratta, quindi è probabile che tu debba derivarne e implementare alcuni metodi/proprietà astratti. – Bernard

+0

Non necessariamente ... Penso che sia più probabile che l'astrazione sia utilizzata dal framework. Poiché si tratta di una classe pubblica, e dal momento che UnitTestExecution non lo è, sembra seguire lo schema di esposizione dell'astrazione, ma non l'implementazione. Di solito, c'è un modo per ottenere un riferimento a un'istanza dell'astrazione (come con la proprietà TestContext, dove TestContext è anche una classe astratta), ma non sono stato in grado di trovarlo. –

+0

Sembra una di quelle situazioni in cui "chiedere all'autore" sarebbe la cosa migliore. – Bernard

risposta

10

Un'istanza TestExecution viene fornita quando si implementa una personalizzazione TestExtensionExecution. Fornisce un metodo Initialize, che è possibile sovrascrivere per iscriversi agli eventi di test.

Questo di solito fa parte dell'implementazione di un attributo di test personalizzato in MSTest.

Modifica Per creare la propria estensione di prova, inizia con la creazione di un nuovo attributo che deriva da Microsoft.VisualStudio.TestTools.UnitTesting.TestClassExtensionAttribute, che è una classe astratta che richiede di fornire un TestExtensionExecution tramite il metodo GetExtension().

Applicare l'attributo ad uno dei vostri metodi di test e si dovrebbe essere in grado di iscriversi a questi eventi durante la prova (all'interno del vostro TestExtensionExecution implementazione restituita dall'attributo)

noti che si deve anche ad attuare una ITestMethodInvoker che dovresti essere in grado di creare dalla proprietà TetMethodInvokerContext.TestMethodInfo fornita al metodo TestExtensionExecute.CreateTestMethodInvoker.

+1

Come si configura una di queste estensioni da utilizzare? –

+0

Vorrei che questa informazione fosse già parte della documentazione di MST su MSDN. –

Problemi correlati