Próbuję rozszerzyć .NET TestClass
. Odkryłem, że muszę rozszerzyć następujące abstrakcyjne klasy: TestClassExtensionAttribute
i TestExtensionExecution
. TestExtensionExecution
również wymaga mnie do wdrożenia ITestMethodInvoker
. Zrobiłem następujące rzeczy, ale kiedy uruchomię metodę testową, żaden z moich punktów przerwania nie jest trafiony (ani w teście, ani w rozszerzeniach), co oznacza, że klasa testowa nigdy nie dostaje się do mojego rozszerzenia i oczywiście kończy się niepowodzeniem we wcześniejszym punkcie. Czy ktoś może wskazać mi, czego mi brakuje, lub na działającym przykładzie, jak przedłużyć ?Jak przedłużyć .NET TestClass
Rozszerzenie:
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);
}
}
Czy brałeś pod uwagę czwartą kwestię, o której mowa [tutaj] (http://www.digitaltapestry.net/blog/extending-mstest)? – BartoszKP
Nie widziałem tego artykułu do tej pory. Przyjrzę się temu i być może dostarczy mi rozwiązania. Jeśli ją znajdę, opublikuję ją jako odpowiedź. Wielkie dzięki! –
To może wyglądać głupio, ale czy nie jest to spowodowane brakiem "public" przed deklaracją klasy rozszerzenia? !!! – Bedouin