Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2012 将通配符测试容器添加到mstest。exe_Visual Studio 2012_Tfs_Mstest_Tfsbuild_Vs Unit Testing Framework - Fatal编程技术网

Visual studio 2012 将通配符测试容器添加到mstest。exe

Visual studio 2012 将通配符测试容器添加到mstest。exe,visual-studio-2012,tfs,mstest,tfsbuild,vs-unit-testing-framework,Visual Studio 2012,Tfs,Mstest,Tfsbuild,Vs Unit Testing Framework,是否可以将通配符testcontainer值传递到命令行mstest.exe,而不是手动硬编码多个testcontainer值?比如 Mstest.exe/testcontainer:tests.dll 我想在我们的tfs 2012 upgrade template.xaml构建过程中手动调用mstest,使其行为类似于在default template.xaml中运行测试的自动发现方式 如果没有,是否可以将其写入bat脚本中,以在给定开始文件夹的文件夹中循环?MSTest不为testconta

是否可以将通配符testcontainer值传递到命令行mstest.exe,而不是手动硬编码多个testcontainer值?比如

Mstest.exe/testcontainer:tests.dll

我想在我们的tfs 2012 upgrade template.xaml构建过程中手动调用mstest,使其行为类似于在default template.xaml中运行测试的自动发现方式


如果没有,是否可以将其写入bat脚本中,以在给定开始文件夹的文件夹中循环?

MSTest
不为testcontainer()使用通配符参数。但是,它可以接受多个/testcontainer参数,如下所示:

mstest.exe /testcontainer:a.test.dll /testcontainer:b.tests.dll
您必须以另一种方式提供这些参数。这可以使用批处理文件来完成,但是
MSBuild
可能是更好的选择:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="RunMSTest">

<ItemGroup>
    <TestAssemblies Include="**\*Tests.dll"/>
</ItemGroup>

<Target Name="RunMSTest">
    <Exec Condition=" '@(TestAssemblies)' != ''"
          Command="Mstest.exe @(TestAssemblies ->'/testcontainer:&quot;%(RecursiveDir)%(Filename)%(Extension)&quot;', ' ')"
          />
</Target>

</Project>

(感谢您的转变)

将i保存到一个文件(
testall.proj
),并使用
MSBuild testall.proj
运行它,或者创建一个批处理文件来为您运行它


还请注意,mstest在一个应用程序域中加载所有提供的testcontainers,因此它们将需要支持相同的平台目标(任何cpu、x86、x64)。

也可以使用cmd文件通过通配符将容器收集到单个变量中,然后在扩展此变量的情况下运行mstest:

call "%VS100COMNTOOLS%vsvars32"
@setlocal enabledelayedexpansion enableextensions
@set list=
@for %%x in (.\Bin\Debug\*Test.dll) do set list=!list! /testcontainer:%%x
@set list=%list:~1%

mstest %list%

我认为,只要抓住每个程序集的标识属性,就可以简化转换。我还遇到了路径问题(测试DLL不在目标文件存储位置的正下方),这也解决了这个问题。命令行是否有最大长度?如果有数百个测试DLL,它还能工作吗?