运行 基于名称空间的测试使用 vstest.console 使用

Running tests based on a namespace using vstest.console using

我一直在使用 MsTest.exe 到 运行 测试,使用这样的命名空间:

mstest.exe /testcontainer:"MyDllFile.dll" /test:"NameSpace.Folder.Folder1.*"

这很有效,但我需要能够在 运行 时将参数传递给我的测试,所以我找到了 *.运行 设置文件及其将参数传递给使用 RunTestParameters 并从 TestContext 中的属性获取它们的测试,但缺点是我必须非常具体地说明我想要 运行 的测试,并且必须给它一个特定的方法名称或用逗号分隔的名称执行测试,如下所示:

vstest.console.exe "MyDllFile.dll" /设置:"my.runsettings" /测试:"TestMethod1,TestMethod2"

我也试过 TestCaseFilter 也没有成功:

vstest.console.exe "vstest.console.exe "MyDllFile.dll" /设置:"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)

..使用以下运算符。

= (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