我一直在使用MsTest.exe运行测试,使用的命名空间如下:
mstest.exe/testcontainer:"MyDllFile.dll"/test:"NameSpace.Folder.Folder1.*"
这很有魅力,但我需要能够在运行时将参数传递给我的测试,因此,我发现了*.runsettings文件及其使用RunTestParameters将参数传递给测试并从TestContext中的属性中获取参数的能力,但缺点是,我必须非常具体地确定要运行什么测试,并且必须为其指定一个或多个用逗号分隔的特定方法名称来执行测试,如下所示:
vstest.console.exe"MyDllFile.dll"/Settings:"my.runsettings"/Tests:"TestMethod1,TestMethod2"
我还尝试了TestCaseFilter,但也没有成功:
vstest.console.exe"vstest.cossole.exe"MyDllFile.dll"/Settings:"my.runsettings"/TestCaseFilter:"TestCategory=MyTestCategory"
有人建议我如何用mstest.exe和vstest.console.exe完成我能做的事情吗?
谢谢!!
vstest.console.exe的文档特别差。这是可能的,但无论是命令行帮助还是MSDN文档都没有解释如何做到这一点
TestCaseFilter设置可用的选项似乎是特定于适配器的,但对于默认的MsTest适配器,以下属性可用于筛选。
Name=<TestMethodDisplayNameName>
FullyQualifiedName=<FullyQualifiedTestMethodName>
Priority=<PriorityAttributeValue>
TestCategory=<TestCategoryAttributeValue>
ClassName=<ClassName> (Valid only for unit tests for Windows store apps, currently not available for classic MSTest)
使用folling运算符。
= (equals)
!= (not equals)
~ (contains or substring only for string values)
& (and)
| (or)
( ) (paranthesis for grouping)
因此,出于您的目的,以下形式的TestCaseFilter就足够了。
/TestCaseFilter:"FullyQualifiedName~ProjectNamespace.Subnamespace.TestClass"
此处提供更多信息和示例http://blogs.msdn.com/b/vikramagrawal/archive/2012/07/23/running-selective-unit-tests-in-vs-2012-rc-using-testcasefilter.aspx