如何扩展.NET TestClass

时间:2013-10-23 14:26:23

标签: c# .net

我正在尝试扩展.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);
    }
}

1 个答案:

答案 0 :(得分:3)

此MSDN文章介绍了如何实施TestClassExtensionAttributeExtending the Visual Studio unit test type

相关问题:Is defining TestMethod's in test base classes not supported by MsTest?

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

请参阅Using a base class for your unit testing classes