【问题标题】:Global.asax for Unit Tests?Global.asax 用于单元测试?
【发布时间】:2010-06-10 21:16:57
【问题描述】:

在我的 MSTest UnitTest 项目中,在运行任何测试之前,我需要执行一些命令。是否有一个功能,有点像 Global.asax 用于基于 Web 的项目,可以让我在任何测试运行之前启动一些东西?

我要说清楚,当我说“执行一些命令”时,我指的不是DOS命令,而是执行一些代码。

【问题讨论】:

    标签: c# visual-studio-2008 unit-testing mstest startup


    【解决方案1】:

    如果我理解正确,您需要在开始测试之前运行一些初始化代码。如果确实如此,您应该在单元测试类中声明一个方法,使用 ClassInitializeAttribute 如下:

    [ClassInitialize]
    public void ClassSetUp()
    {
         //initialization code goes here...
    }
    

    编辑:还有 AssemblyInitializeAttribute 将在程序集中的任何其他测试之前运行

    【讨论】:

    • AssemblyInitializeAttribute 正是我所需要的。非常感谢,给你自己一个绿色的复选标记。
    • 我必须更改签名才能使其现在工作:public static void ClassSetUp(TestContext ctx)
    【解决方案2】:

    单元测试框架通常支持整个测试夹具和单个测试的设置和“拆卸”方法。 MSTest 允许您指定在使用这些属性时运行哪些方法:

    [ClassIntialize()]
    public void ClassInitialize() {
        // MSTest runs this code once before any of your tests
    }
    
    [ClassCleanup()]
    public void ClassCleanUp() {
        // Runs this code once after all your tests are finished.
    }
    
    [TestIntialize()]
    public void TestInitialize() {
        // Runs this code before every test
    }
    
    [TestCleanup()]
    public void TestCleanUp() {
        // Runs this code after every test
    }
    

    话虽如此,如果您正在运行 ASP.NET 单元测试,请注意类初始化和清理方法。正如ClassInitializeAttribute 文档中所说:

    这个属性不应该用在 ASP.NET 单元测试,即任何测试 带有 [HostType("ASP.NET")] 属性。 由于 IIS 的无状态特性 和 ASP.NET,一种用 这个属性可以被调用超过 每次测试运行一次。

    【讨论】:

    • 关于 ASP.NET 单元测试的好补充!我通过在基类中定义 [TestInitialize] 来解决它。
    【解决方案3】:

    你项目的属性,然后调试字段在那里你可以指定参数

    编辑 当您在属性中看到调试菜单时,您可以启动一个外部程序在您开始调试时为您执行某些操作。这将在您启动测试项目的实例时触发。您还可以在命令行参数框中指定命令行参数。

    例如我使用 NUnit 我将 NUnit 指定为外部程序,并在命令行参数中指定 .dll 的位置

    【讨论】:

    • 我想执行一些代码而不是运行外部命令。
    • 是什么阻止您运行您创建的 .exe 文件?您可以将需要执行的代码编译成一个 exe,您将在调试会话中启动,或者我错过了什么,因为我认为这是解决您的问题的好方法。
    • 我需要在任何测试开始之前运行一些代码。代码是某些类上的一些静态方法,稍后将被大多数测试调用。这就是为什么我需要在执行任何测试之前运行一些代码。
    猜你喜欢
    • 2013-08-05
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 2011-05-08
    相关资源
    最近更新 更多