【问题标题】:Develop and run MSTest unit tests in Visual Studio 2010 without including .vsmdi and .testsettings在 Visual Studio 2010 中开发和运行 MSTest 单元测试,不包括 .vsmdi 和 .testsettings
【发布时间】:2011-06-10 20:06:46
【问题描述】:

我知道这是以某种方式可能的,因为我们有一个项目,其中包含可通过 VS2010 测试运行程序运行的 MSTest 单元测试。我们甚至可以将新的测试方法或类添加到现有的项目中,运行器会选择它们并将它们包含在测试运行中。

当我尝试向解决方案添加一个新的单元测试项目时,问题就出现了。如果我将“测试项目”类型的项目添加到解决方案中,VS2010 将生成在其他项目中运行任何其他测试所不需要的测试元数据和设置文件。例如,对于 OSS 项目,这是不可取的。如果我只是简单地添加一个普通的“类库”项目,并将单元测试放入其中,测试运行器会忽略它们,我根本无法识别它们。

我疯了吗?这是侥幸吗? VS2010 是否可以在没有 .vsmdi 文件或 .testsettings 文件的情况下运行我们的测试?或者我是否缺少使这项工作适用于新项目所需的设置或配置?

【问题讨论】:

  • 我知道这个确切的问题,但从未找到解决方案或解释这里发生的事情。我会看这个问题...

标签: visual-studio-2010 metadata mstest


【解决方案1】:

您确实可以在没有 .vsmdi 和 .testsettings 文件的情况下在 VS 中运行测试(事实上,您可以在添加测试项目后删除它们)

那么为什么它不适用于普通的类库呢?遮阳篷位于 .csproj 文件中。 这是一个普通的类库:

<PropertyGroup>
  <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
  <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
  <ProductVersion>8.0.30703</ProductVersion>
  <SchemaVersion>2.0</SchemaVersion>
  <ProjectGuid>{F191EC72-AFDF-49CE-A918-01905E7C32EF}</ProjectGuid>
  <OutputType>Library</OutputType>
  <AppDesignerFolder>Properties</AppDesignerFolder>
  <RootNamespace>test</RootNamespace>
  <AssemblyName>test</AssemblyName>
  <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
  <FileAlignment>512</FileAlignment>
</PropertyGroup>

这是一个测试项目:

<PropertyGroup>
  <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
  <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
  <ProductVersion>8.0.30703</ProductVersion>
  <SchemaVersion>2.0</SchemaVersion>
  <ProjectGuid>{F191EC72-AFDF-49CE-A918-01905E7C32EF}</ProjectGuid>
  <OutputType>Library</OutputType>
  <AppDesignerFolder>Properties</AppDesignerFolder>
  <RootNamespace>test</RootNamespace>
  <AssemblyName>test</AssemblyName>
  <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
  <FileAlignment>512</FileAlignment>
  <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
</PropertyGroup>

最后一个元素ProjectTypeGuids 告诉 VS,它是一个可以运行 MSTest 测试的项目。据我所知,这些 guid 总是相同的,[至少给定相同版本的 VS] 所以你应该能够将该行粘贴到任何 .csproj 文件中并让 VS 识别其中的测试。

测试设置文件可用于指定部署选项(以及许多其他内容),但大多数选项也可以在命令行中指定到 mstest.exe

.vsmdi 也可以通过向您的测试方法添加属性来替换。 Properties 中用于测试的大多数(如果不是全部)选项可以设置为属性以及 vsmdi 文件。我通常更喜欢属性,因为它们“更接近”代码。

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    相关资源
    最近更新 更多