如何为类中的所有测试设置测试类别

ale*_*lex 43 c# tfs unit-testing mstest

我正在使用MSTest,我想同时为测试类中的所有方法设置相同的测试类别,而无需单独为每个方法设置TestCategory属性.如何才能做到这一点?

最方便和最明显的方法是在类上设置TestCategory属性,但它只能应用于方法.

最终目标是在TFS签入的测试运行期间跳过集成测试.

Nom*_*que 6

为了能够[TestCategory]级别设置属性,请使用NuGet安装“ MSTest V2” TestFramework。

参考:https : //blogs.msdn.microsoft.com/devops/2016/06/17/taking-the-mstest-framework-forward-with-mstest-v2/


jdm*_*air 5

我一直在寻找类似的东西,而且我已经找到了一个非常适合我的目的的解决方案.

这并没有解决在每个阶级基础应用TestCategory的问题,你可以使用/test:命令行参数mstest来指定搜索字符串匹配的任何部分完全限定方法名测试.这意味着您通常可以匹配类,命名空间或您可以到达的任何匹配目标测试的搜索字符串.如果不这样做,您可以/test:多次使用该参数.即:

> mstest /testcontainer:My.dll /test:My.FullyQualified.Namespace 
    /test:My.FullyQualified.OtherNamespace.OtherClass
Run Code Online (Sandbox Code Playgroud)

更多信息

编辑:

TestCategory现在可以在MSTest V2中添加类级别的属性,如下面NomadeNumerique的答案中所述.细节


Zee*_*Zee 2

解决此限制的一种方法是将测试类别放在每个测试方法的开头。例如,将您的单元测试命名为

public void UnitTestDoSomething_ExpectThis()
Run Code Online (Sandbox Code Playgroud)

和你的集成测试

public void IntegrationTestDoSomething_ExpectThis()
Run Code Online (Sandbox Code Playgroud)

然后,当您执行 TFS 查询来获取您可以执行的集成测试时

Field[Automated Test Name] with Operator[Contains] and Value[IntegrationTest]

尽管这不是一个完美的解决方案,但它将帮助您区分代码和 TFS 中的测试。或者,您可以查看区域和迭代路径。