5

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

1 回答 1

3

这篇 MSDN 文章描述了如何实现TestClassExtensionAttribute扩展 Visual Studio 单元测试类型

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

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

请参阅为您的单元测试类使用基类

于 2014-07-17T05:10:23.813 回答