使用

时间:2016-01-06 23:10:01

标签: c# automation mstest vstest.console.exe

我一直在使用MsTest.exe来运行使用命名空间的测试,如下所示:

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

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

vstest.console.exe“MyDllFile.dll”/Settings:"my.runsettings“/测试:”TestMethod1,TestMethod2“

我也尝试过没有运气的TestCaseFilter:

vstest.console.exe“vstest.console.exe”MyDllFile.dll“/Settings:”my.runsettings“/ TestCaseFilter:”TestCategory = MyTestCategory“

是否有人建议我如何使用vstest.console.exe完成mstest.exe的操作?

谢谢!

1 个答案:

答案 0 :(得分:4)

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