MSTest - 从构建服务器隐藏一些单元测试

发布于 2024-11-08 14:54:33 字数 238 浏览 5 评论 0原文

我有三个单元测试,从构建服务器运行时无法通过 - 它们依赖于运行测试的用户的登录凭据。

有什么方法(属性???)我可以从构建服务器隐藏这三个测试,并运行所有其他测试?

我们的构建服务器专家告诉我,生成一个排除这些测试的 vsmdi 文件就可以解决问题,但我不确定如何做到这一点。

我知道我可以将这三个测试放入一个新项目中,并让我们的构建服务器管理员明确排除它,但我真的很希望能够在有问题的测试中使用一个简单的属性。

I have three unit tests that cannot pass when run from the build server—they rely on the login credentials of the user who is running the tests.

Is there any way (attribute???) I can hide these three tests from the build server, and run all the others?

Our build-server expert tells me that generating a vsmdi file that excludes those tests will do the trick, but I'm not sure how to do that.

I know I can just put those three tests into a new project, and have our build-server admin explicitly exclude it, but I'd really love to be able to just use a simple attribute on the offending tests.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

源来凯始玺欢你 2024-11-15 14:54:33

您可以使用类别标记测试,然后根据类别运行测试。

[TestCategory("RequiresLoginCredentials")]
public void TestMethod() { ... }

当您运行 mstest 时,您可以指定 /category:"!RequiresLoginCredentials"

You can tag the tests with a category, and then run tests based on category.

[TestCategory("RequiresLoginCredentials")]
public void TestMethod() { ... }

When you run mstest, you can specify /category:"!RequiresLoginCredentials"

紅太極 2024-11-15 14:54:33

有一个 IgnoreAttribute 。该帖子还列出了其他方法。

There is an IgnoreAttribute. The post also lists the other approaches.

神经大条 2024-11-15 14:54:33

其他答案都是旧的。

在现代 Visual Studio(2012 及更高版本)中,测试使用 vstest 而不是 mstest 运行。

新的命令行参数是 /TestCaseFilter:"TestCategory!=Nightly"
这篇文章。

Others answers are old.

In modern visual studio (2012 and above), tests run with vstest and not mstest.

New command line parameter is /TestCaseFilter:"TestCategory!=Nightly"
as explained in this article.

无力看清 2024-11-15 14:54:33

打开测试 -> Windows -> 测试列表编辑器。

您可以在那里包含/隐藏测试

Open Test->Windows->Test List Editor.

There you can include / hide tests

一笑百媚生 2024-11-15 14:54:33

我想出了如何在 VS 2012 的构建定义中按类别过滤测试。我在其他地方找不到此信息。

在测试源下的测试用例过滤器字段中,在自动化测试下,在构建过程参数下,在过程选项卡中,您需要编写 TestCategory=MyTestCategory (任何地方都没有引号),

然后在测试源文件中,您需要添加 TestCategory 属性。我已经看到了几种方法来做到这一点,但对我有用的是将其添加到与 TestMethod 相同的属性中,如下所示。

[TestCategory("MyTestCategory"), TestMethod()]

这里您确实需要引号

I figured out how to filter the tests by category in the build definition of VS 2012. I couldn't find this information anywhere else.

in the Test Case Filter field under Test Source, under Automated Tests, under the Build process parameters, in the Process tab you need to write TestCategory=MyTestCategory (no quotes anywhere)

Then in the test source file you need to add the TestCategory attribute. I have seen a few ways to do this but what works for me is adding it in the same attribute as the TestMethod as follows.

[TestCategory("MyTestCategory"), TestMethod()]

Here you do need the quotes

生死何惧 2024-11-15 14:54:33

当我从 VS 构建定义(不完全是 MSTest)运行单元测试时,在“自动化测试”属性的“条件”选项卡中,我指定:

TestCategory!=MyTestCategory

跳过类别为 MyTestCategory 的所有测试。

When I run unit tests from VS build definition (which is not exactly MSTest), in the Criteria tab of Automated Tests property I specify:

TestCategory!=MyTestCategory

All tests with category MyTestCategory got skipped.

檐上三寸雪 2024-11-15 14:54:33

我的首选方法是在我的解决方案中包含两种测试项目:一种用于单元测试,可以从任何上下文执行并且应该始终通过,另一种用于集成测试,需要特定的上下文才能正确运行(用户凭据) 、数据库、Web 服务等)。我的测试项目使用命名约定(例如:businessLogic.UnitTests 与businessLogic.IntegrationTests),并且我将构建服务器配置为仅运行单元测试(*.UnitTests)。这样,如果我想运行集成测试,我就不必注释 IgnoreAttributes,并且我发现它比编辑测试列表更容易。

My preferred way to do that is to have 2 kinds of test projects in my solution : one for unit tests which can be executed from any context and should always pass and another one with integration tests that require a particular context to run properly (user credential, database, web services etc.). My test projects are using a naming convention (ex : businessLogic.UnitTests vs businessLogic.IntegrationTests) and I configure my build server to only run unit tests (*.UnitTests). This way, I don't have to comment IgnoreAttributes if I want to run the Integration Tests and I found it easier than editing test list.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文