我正在尝试扩展.NET TestClass
。我发现我需要扩展以下抽象类:TestClassExtensionAttribute
和TestExtensionExecution
。 TestExtensionExecution
还要求我实施ITestMethodInvoker
。我已经完成了以下操作,但是当我运行测试方法时,没有任何断点被攻击(在测试和扩展中都没有),这意味着测试类永远不会到达我的扩展,并且显然在较早的时候失败。 有人可以指出我所缺少的内容,还是有关如何扩展 TestClass
的工作示例?
扩展:
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();
}
}
测试:
[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);
}
}
答案 0 :(得分:3)
此MSDN文章介绍了如何实施TestClassExtensionAttribute
:Extending the Visual Studio unit test type
相关问题:Is defining TestMethod's in test base classes not supported by MsTest?
根据您要完成的练习,您可以使用标有[TestClass]
的标准抽象类。 TestClassAttribute
将由派生类型继承,但派生类型也必须使用[TestClass]
标记,以便与[TestInitialize]
和[TestCleanup]
一起使用。