如何清除测试方法的[Ignore]缓存?(无需重新启动Visual Studio)

5

我有一些测试被标记为[Ignore],但现在我想再次运行它们,所以我删除了[Ignore]属性,但Visual Studio仍将其视为被忽略的。

我该怎么清除缓存,让测试不再被忽略呢?

更新:

看起来这些数据存储在vsmdi文件中:

<TestLink ... name="MethodName" ... enabled="false" />

因此,删除vsdmi文件或使其重新生成是必要的。

但是,Visual Studio会缓存它,因此重新启动Visual Studio似乎可以解决问题(至少有时候可以)。


我可以重命名这个方法,但我不想重命名它。即使将其重命名回来,也会记住旧的忽略状态。 - McKay
我还发现我可以重命名这个类。 - McKay
4个回答

3
你尝试过在构建菜单中使用Clean Solution了吗?另外,我建议删除测试项目中的bin/obj文件夹。如果这样做不起作用,我会查找其他可能是某种缓存或与测试项目相关的二进制文件,并将其删除。我想定位这些文件并删除它们应该不难(请确保备份文件以防万一)。
编辑:显然是.vsmdi文件。
编辑2:显然不是 :P
如果我遇到这样的问题,我甚至会进行文件搜索,寻找被[忽略]的特定方法名称。确保使用一个可以“查看”每个文件的工具,Windows文件搜索会忽略大量文件。

1
我会搜索整个项目目录(使用 *.* 确保不漏掉任何文件)。我使用自己的自制工具来完成这种任务,但你可能会在这里找到一个好的工具。无论你做什么,避免使用“SpectateSwamp Desktop Search” :P - RobIII
正如你所猜测的那样,Clean 没有清理干净。 - McKay
这也不是VSMDI文件。 - McKay
我知道这是一种原始的方法,但是当你不确定时,只需开始删除你认为可能是问题的文件(并告诉我们哪一个是问题所在)。只要你有一个不错的备份(或者已经使用版本控制系统),这不应该是一个问题。我想传达的是,找到问题的原因不可能那么难;在确定了问题的原因后,你可以更好地将你的谷歌搜索引导向更好和/或更永久的解决方案(甚至可能找到热修复/补丁)。很遗憾,我无法在我的系统上重现你的问题,否则我会能够更好地帮助你解决问题。 - RobIII

2
我们在工作中也遇到了这个问题。
您可以手动更改.vsmdi文件或删除它。如果您再次打开测试视图(删除后),它将生成一个新文件。
另外,选择的测试设置也可能会出现相同类型的问题。它也会“缓存”那个文件。

不错的解决方案,但我看到两个问题:1)仍然似乎是一个变通方法来处理vsmdi文件,并且它不像重命名类或方法那样简单易行。2)我们的VSMDI文件是基于其他测试方法属性生成的,因此这使得该过程更加困难。 - McKay
非常抱歉,我本来以为我们已经解决了这个问题。我知道当我更改测试设置时,我会关闭解决方案、关闭 Visual Studio,并重新打开两者,以确保测试设置实际上已经更改。你可以试试这个方法。但现在我感觉自己像是在瞎猜。 :P - Scen
哦,我也得关闭 Visual Studio 吗?那真是烦人啊。这意味着它有三个缺点了。不过我还是会试一试的。 - McKay
Visual Studio中的MSTest存在一些问题。我认为最好将测试重命名。但是,如果您曾经使用多个测试设置(就像我们一样-一个用于代码覆盖率,另一个用于正常测试运行),那么您无论如何都需要这样做。 - Scen
是的,我们有一个从属性生成测试列表(写入 vsmdi 文件)的工具,所以我一直在重命名测试,但我希望有一个比“重新启动 Visual Studio”更好的解决方案。 - McKay

1
即使这个主题已经很老了,我还是想为那些遇到同样问题的人添加我的解决方案......
最近我也遇到了这个问题,在.vsmdi文件中找到了解决方案。 在“测试设置”下,“单元测试”中有一个文件夹被引用在“要加载的程序集的根文件夹:”中,并且选中了“在测试目录中使用加载上下文来装载程序集”的复选框。
我取消了复选框的勾选,然后我的测试成功运行了!(我知道在“根文件夹......”中引用的文件是旧程序集。您也可以从“根文件夹...”中删除文件,以确保删除旧程序集。)

0
我使用的是Visual Studio 2012,但没有.vsdmi文件,却遇到了问题。我通过删除.suo(与.sln文件相邻的隐藏文件)文件并重新启动Visual Studio来解决这个问题。我知道它说不需要重新启动,但是提供的解决方案对我无效,因此我提供了一种替代方法,以防其他人遇到相同的错误。

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