【问题标题】:.Net Class Library Unit Test Setup Step for All Tests called only once所有测试的 .Net 类库单元测试设置步骤仅调用一次
【发布时间】:2012-01-26 21:04:38
【问题描述】:

我有一个类库和相关的测试库。无论执行多少类或测试,类库都需要在运行开始时启动 Windows Azure 存储模拟器。我看到了基础测试类,但每个类都调用它。我需要更类似于一开始只调用一次的全局类。

这个问题与这个用于测试的 Azure 存储模拟器设置有关:How to start Azure Storage Emulator from within a program

我正在使用 Visual Studio 2010 Professional。类库是 .Net Framework 4。

【问题讨论】:

  • 请指定您使用的单元测试库。答案将取决于此。 (NUnit、XUnit、MSTest 等...)
  • 这是包含的库:Microsoft.VisualStudio.TestTools.UnitTesting

标签: .net visual-studio-2010 unit-testing installation azure-storage


【解决方案1】:

您使用的是哪个单元测试库(MSTest、NUnit 等)?它们都有在每次测试之前运行初始化的方法,或者在所有测试之前运行一次。

使用 MSTest,初始化代码(将在所有测试之前运行一次)如下所示

[AssemblyInitialize()]
public static void AssemblyInit(TestContext context)
{
    // Initalization code goes here
}

【讨论】:

  • 我包括了 Microsoft.VisualStudio.TestTools.UnitTesting,它包含在 VS 中,没有添加任何东西,所以我假设它是 MSTest 或一些变体。我有 3 个从基类继承的类,因此有 4 个文件。我把这段代码放在哪里?它是自己的类或基类的 c'tor 或其他地方。
  • AssemblyInitialize() 属性标记应在加载程序集时运行的代码,即它将在同一程序集中定义的所有测试类之前运行。还有ClassInitialize(),它将在单个类中的任何测试之前运行(您可以将其放入基类中)。有关完整文档,请参阅 here
【解决方案2】:

如果您使用的是 nUnit,您可以创建一个所有测试类都可以继承的 TestFixture 类。在您的 TestFixture 中创建一个具有 TestFixtureSetUp 属性的设置方法,在该设置中您可以启动 Azure 存储模拟器

http://www.nunit.org/index.php?p=fixtureSetup&r=2.2.10

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2013-08-29
    相关资源
    最近更新 更多