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);
}
}
Haben Sie die vierte Ausgabe [hier] (http://www.digitaltapestry.net/blog/extearning-mstest) berücksichtigt? – BartoszKP
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! –
Es sieht vielleicht blöd aus, aber liegt es nicht an einer fehlenden "public" vor der Erweiterungsklassen-Deklaration? !!! – Bedouin