如何扩展 .NET TestClass

本文关键字:NET TestClass 扩展 何扩展 | 更新日期: 2023-09-27 18:36:30

我正在尝试扩展.NET TestClass。我发现我需要扩展以下抽象类:TestClassExtensionAttributeTestExtensionExecutionTestExtensionExecution还需要我实现一个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);
    }
}

如何扩展 .NET TestClass

这篇

MSDN 文章介绍如何实现TestClassExtensionAttribute: 扩展 Visual Studio 单元测试类型

相关问题:MsTest 是否不支持在测试基类中定义 TestMethod?

根据您要完成的工作,您可以使用标有 [TestClass] 的标准抽象类。 派生类型将继承TestClassAttribute,但派生类型也必须标有 [TestClass] 才能与 [TestInitialize][TestCleanup] 一起使用。

请参阅对单元测试类使用基类。