Visual studio 2010 mstest.exe通过带有*.vsmdi的命令行执行

Visual studio 2010 mstest.exe通过带有*.vsmdi的命令行执行,visual-studio-2010,c#-4.0,mstest,Visual Studio 2010,C# 4.0,Mstest,我有一个C#项目的visual studio解决方案。目前,我的解决方案中没有测试项目。所以我没有文件*.vsmdi 我想通过这样的命令行测试我的项目 MSTest.exe/testmetadata:*.vsmdi/resultsfile:Logfile.log 是否可以在不添加项目的情况下创建.vsmdi?如果可能,怎么做 要在命令行中执行,*.vsmdi文件必须存在于解决方案中 如果我必须使用IDE进行测试,我应该在测试项目中有*.vsmdi文件吗 *.vsmdi文件的唯一用途是列出测试用例

我有一个C#项目的visual studio解决方案。目前,我的解决方案中没有测试项目。所以我没有文件*.vsmdi

我想通过这样的命令行测试我的项目

MSTest.exe/testmetadata:*.vsmdi/resultsfile:Logfile.log

  • 是否可以在不添加项目的情况下创建.vsmdi?如果可能,怎么做

  • 要在命令行中执行,*.vsmdi文件必须存在于解决方案中

  • 如果我必须使用IDE进行测试,我应该在测试项目中有*.vsmdi文件吗

  • *.vsmdi文件的唯一用途是列出测试用例

  • 1) 从技术上讲,可以创建.vsmdi文件,而无需将测试项目添加到解决方案中。由于VSMDI文件的内容是XML,因此可以手动编写或使用基于程序集中测试的工具生成它们。但是,当解决方案中不包括测试项目时,VSMDI文件就没有那么有用了,因为VSMDI文件的功能是管理测试。但您仍然可以使用它们(另请参见问题2的答案)

    如果要手动写入vsmdi文件,则需要使用SHA1对FQN进行散列,并为散列的前128位创建Guid,如下所示(Dominic Hopton提供的代码)。有关更多信息,请参阅他的博客文章:

    2) 不需要,只要TestLink元素的存储属性指向包含测试的正确程序集(相对于vsmdi文件),vsmdi文件就不需要位于解决方案文件夹(或解决方案)中。例如:

    <TestLink id="0c257cc9-ffed-cd5e-bda1-56df14ad68c2" name="AddOneAndTwo_Test"
     storage="TestProject\bin\debug\testproject.dll" />
    
    
    
    3) Vsmdi文件存在于解决方案级别,而不是项目级别。如果有多个测试项目,则可以使用一个vsmdi文件来管理所有测试。请注意,如果您在解决方案中加载了项目,则在Visual Studio中运行测试时,存储属性将被忽略

    4) Vsmdi文件用于管理解决方案中的测试,您可以在Vsmdi文件中创建多个层的层次结构。例如,您的解决方案中有多个要测试的程序集。在根测试列表(称为:测试列表)下,为每个项目创建一个测试列表。然后,您可以将其中一个项目的测试列表划分为两个或多个单独的测试列表(例如,一个用于测试业务逻辑,另一个用于测试错误处理)。当您只想测试项目A中的业务逻辑测试时,可以选择相应的测试列表并在其中运行测试

    关于vsmdi文件的额外说明:

    A) 自Visual Studio 2012以来,Microsoft决定不推荐使用VSMDI文件(以及测试列表)。测试列表已被测试类别(已存在于Visual Studio 2010中)和播放列表替换。 测试类别是可以在单个测试方法上设置的属性,可以在构建中使用。播放列表是在Visual Studio 2012 Update 2中引入的,当前在MSBuild中不受支持

    有关测试类别的更多信息,请参阅:

    <TestLink id="0c257cc9-ffed-cd5e-bda1-56df14ad68c2" name="AddOneAndTwo_Test"
     storage="TestProject\bin\debug\testproject.dll" />