2013-10-23 9 views
5

Ich versuche, die .NET TestClass zu erweitern. Ich habe herausgefunden, dass ich die folgenden abstrakten Klassen erweitern muss: TestClassExtensionAttribute und TestExtensionExecution. TestExtensionExecution erfordert auch, dass ich eine ITestMethodInvoker implementieren. Ich habe Folgendes getan, aber wenn ich eine Testmethode ausführe, wird keiner meiner Breakpoints getroffen (weder im Test noch in den Erweiterungen), was bedeutet, dass die Testklasse niemals zu meiner Extension kommt und offensichtlich zu einem früheren Zeitpunkt versagt. Kann mir jemand zeigen, was ich vermisse oder an einem Arbeitsbeispiel, wie man dasTestClass erweitert?So erweitern Sie die .NET TestClass

Erweiterung:

class CoreTestClass : TestClassExtensionAttribute 
{ 
    public override Uri ExtensionId 
    { 
     get { throw new NotImplementedException(); } 
    } 

    public override TestExtensionExecution GetExecution() 
    { 
     return new TestCore(); 
    } 
} 

class TestCore: TestExtensionExecution 
{ 
    public override ITestMethodInvoker CreateTestMethodInvoker(TestMethodInvokerContext context) 
    { 
     return new AnalysisTestMethodInvoker(); 
    } 

    public override void Dispose() 
    { 

    } 

    public override void Initialize(TestExecution execution) 
    { 
     execution.OnTestStopping += execution_OnTestStopping; 
    } 

    void execution_OnTestStopping(object sender, OnTestStoppingEventArgs e) 
    { 
     throw new NotImplementedException(); 
    } 
} 

class AnalysisTestMethodInvoker : ITestMethodInvoker 
{ 
    public TestMethodInvokerResult Invoke(params object[] parameters) 
    { 
     throw new NotImplementedException(); 
    } 
} 

Test:

[CoreTestClass] 
public class HomeControllerTest 
{ 
    [TestMethod] 
    public void Index() 
    { 
     // Arrange 
     HomeController controller = new HomeController(); 

     // Act 
     ViewResult result = controller.Index() as ViewResult; 

     // Assert 
     Assert.AreEqual("Modify this template to jump-start your ASP.NET MVC application.", result.ViewBag.Message); 
    } 
} 
+2

Haben Sie die vierte Ausgabe [hier] (http://www.digitaltapestry.net/blog/extearning-mstest) berücksichtigt? – BartoszKP

+2

Ich habe diesen Artikel bisher nicht gesehen. Ich werde es mir anschauen und vielleicht werde es mir eine Lösung geben. Wenn ich eins finde, werde ich es als Antwort posten. Danke vielmals! –

+0

Es sieht vielleicht blöd aus, aber liegt es nicht an einer fehlenden "public" vor der Erweiterungsklassen-Deklaration? !!! – Bedouin

Antwort

3

Dieser MSDN-Artikel beschreibt, wie TestClassExtensionAttribute implementieren: Extending the Visual Studio unit test type

Verwandte Frage: Is defining TestMethod's in test base classes not supported by MsTest?

Je nachdem, was Sie tyring begehen Sie können eine abstrakte Standardklasse verwenden, die mit [TestClass] gekennzeichnet ist. TestClassAttribute wird von abgeleiteten Typen geerbt, jedoch müssen abgeleitete Typen auch mit [TestClass] zur Verwendung mit [TestInitialize] und [TestCleanup] gekennzeichnet werden.

Siehe Using a base class for your unit testing classes.

Verwandte Themen