单元测试的Global.asax?

时间:2010-06-10 21:16:58

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

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

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

3 个答案:

答案 0 :(得分:17)

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

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

编辑:在汇编

中的任何其他测试之前还会运行AssemblyInitializeAttribute

答案 1 :(得分:3)

单元测试框架通常支持整个测试夹具和单个测试的设置和“拆卸”方法。 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,一个装饰的方法   可以多次调用此属性   每次试运行一次。

答案 2 :(得分:1)

项目的属性,然后调试字段,您可以指定参数

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

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