【发布时间】:2010-06-10 21:16:57
【问题描述】:
在我的 MSTest UnitTest 项目中,在运行任何测试之前,我需要执行一些命令。是否有一个功能,有点像 Global.asax 用于基于 Web 的项目,可以让我在任何测试运行之前启动一些东西?
我要说清楚,当我说“执行一些命令”时,我指的不是DOS命令,而是执行一些代码。
【问题讨论】:
标签: c# visual-studio-2008 unit-testing mstest startup
在我的 MSTest UnitTest 项目中,在运行任何测试之前,我需要执行一些命令。是否有一个功能,有点像 Global.asax 用于基于 Web 的项目,可以让我在任何测试运行之前启动一些东西?
我要说清楚,当我说“执行一些命令”时,我指的不是DOS命令,而是执行一些代码。
【问题讨论】:
标签: c# visual-studio-2008 unit-testing mstest startup
如果我理解正确,您需要在开始测试之前运行一些初始化代码。如果确实如此,您应该在单元测试类中声明一个方法,使用 ClassInitializeAttribute 如下:
[ClassInitialize]
public void ClassSetUp()
{
//initialization code goes here...
}
编辑:还有 AssemblyInitializeAttribute 将在程序集中的任何其他测试之前运行
【讨论】:
AssemblyInitializeAttribute 正是我所需要的。非常感谢,给你自己一个绿色的复选标记。
public static void ClassSetUp(TestContext ctx)
单元测试框架通常支持整个测试夹具和单个测试的设置和“拆卸”方法。 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,一种用 这个属性可以被调用超过 每次测试运行一次。
【讨论】:
你项目的属性,然后调试字段在那里你可以指定参数
编辑 当您在属性中看到调试菜单时,您可以启动一个外部程序在您开始调试时为您执行某些操作。这将在您启动测试项目的实例时触发。您还可以在命令行参数框中指定命令行参数。
例如我使用 NUnit 我将 NUnit 指定为外部程序,并在命令行参数中指定 .dll 的位置
【讨论】: