在Visual Studio中,什么是跳过的测试?

42

我尝试通过按下“运行全部”按钮在ASP.NET MVC中运行Visual Studio测试,但所有测试都被跳过了。为什么会发生这种情况,我该如何运行所有测试?以下是截图:

Skipped Tests


1
你有测试设置文件吗? - kevin_fitz
8
我知道有一段时间了,但是你解决了这个问题吗?我也遇到了同样的问题,但是无论我去哪里寻找解决方案都找不到。 - andyroschy
这些测试是使用MSTest框架编写的吗?还是使用NUnit,xUnit.NET或其他框架?如果是的话,您是否会安装相应的测试运行器插件? - Spock
@andyroschy,你解决了这个问题吗? - Spock
重启计算机后(不仅是Visual Studio),这个问题似乎对我来说已经解决了。 - jrh
显示剩余8条评论
11个回答

34

检查测试是否有忽略属性。


使用 Ignore 属性运行 SpecFlow 测试将使测试资源管理器跳过这些测试。 - JSDeveloper
2
我只想添加一条注意事项,即忽略属性可以应用于方法和类。 - Zé Carlos

8

使用Inconclusive结果的测试将显示为跳过。因此,VS 2010 inconclusive == VS 2012 skipped

例如:

Assert.Inconclusive("This test didn't exactly fail, but we can't be certain the results are good.")

在测试窗口中,将被视为跳过。

4

您所指向的测试设置文件可能无效。请确保该设置文件具有正确的参数(例如远程或本地),然后在工具栏中转到 Tests>Test Settings>Select Test Settings File 以选择有效的文件。


4
我在VS 2015中遇到了这个问题,还有QTAgent32崩溃等问题。后来发现这与测试设置无关,实际上是我测试的类中存在栈溢出(我说真的)。由于代理程序崩溃导致我的几个测试失败,以及一大堆其他测试被跳过。为此,我注释掉了受影响区域中的所有测试,直到“运行全部”成功,然后逐个取消注释,直到发现错误。为了查看实际的SO异常,我必须调试测试。最后,我多次自责并解决了问题。虽然这种情况不太可能发生,但也不能排除。

我在ClassInitialize、类构造函数甚至是默认初始化属性抛出异常时也遇到过类似的问题......但这次不是这种情况,因为我的类是空的,我仍然遇到了这个问题。 - AdIch
可能是因为它是空的所以被跳过了。似乎有很多原因导致这种情况发生,个人认为Test32需要升级。我有一个项目无法调试测试。所有东西看起来都有点不稳定。 - Tony Hopkinson

3

也可能是由于测试一个64位项目,但 test->Test Settings->Default Processor Architecture=x86 所导致。


2

假设你的之前的测试都没有失败,那么你的测试可能因为权限不足而被跳过。

您可以在测试中使用“TestCategories”注释。将它们标记为:

[TestCategory("Admin") TestMethod()]
public Void Test1()
{
   ...
}

然后排除类别:

mstest /testcontainer:MyTestprojectName.dll /category:"!Admin"

您可以在每个测试中使用多个类别。 有关详细信息: http://msdn.microsoft.com/en-us/library/dd286683.aspx


2

除了这里提到的,还要检查TestClass是否也具有Ignore属性(不仅仅是测试方法)。这个问题曾经让我吃过亏...


1

我知道这是一个旧问题,没有被接受的答案,但也许这会对某些人有所帮助。

在测试资源管理器(Test Explorer)中(Tests -> Windows -> Test Explorer),你可以看到所有被跳过的测试。如果你双击测试名称,它将打开实际的测试代码。检查测试是否有 [Ignore] 属性,如果你想运行测试,请删除它。(如@Sridarshan建议)

P.S. 我用的是NUnit测试。


1

我在TestSettings.testsettings文件中定义了一个安装脚本,但是这个脚本在我的开发机上不存在。

<Scripts setupScript="C:\Deployment\UnitTestSetup.cmd" />

1
这是我的问题,它没有给我任何关于它的消息。直到我从testrunconfig文件中删除脚本,它才跳过测试。 - Ed Bayiates

0
可能对于这个具体情况可能不相关,但是如果你的NUnit测试在测试资源管理器中没有运行,并且被跳过了,你可能需要检查一下是否安装了Microsoft.Net.Test.Sdk nuget。它是必需的。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接