忽略IgnoreAttribute

时间:2012-04-12 08:35:20

标签: c# mstest resharper-5.1

我们有MSTest测试,可以按小时生产自动运行。 其中一项测试标有 [Ignore] 属性,因为尚未准备好在我们的生产环境中运行它。
现在我想在我的本地环境中启动该测试(仅),因为我的本地环境已准备好进行该测试 我尝试通过单击测试代码左侧的ReSharper图标或单击单元测试会话窗口中的运行选定的测试图标来运行该测试,但没有任何反应。

我目前通过评论[Ignore]行来修复它。但是现在我需要注意在签入代码之前删除注释字符(//)。

还有另一种临时运行[Ignore]'d测试的方法吗?

3 个答案:

答案 0 :(得分:37)

最近,当我遇到这样的问题时,我将一个新的Build Configuration添加到名为“Local Developer Debug”的visual studio项目中,并使用现有Debug配置中的设置。然后我转到“项目 - > MyProjectName属性 - >构建”,确保“Local Developer Debug”是所选配置并将“LOCALDEVBUILD”添加到“条件符号符号”。这允许使用预处理程序指令在编译时“切换”代码:

#if (!LOCALDEVBUILD)
    [Ignore]
#endif

不确定这是否是您正在寻找的...但它允许您根据构建的意图运行/利用特定代码(通过构建配置)...使用此方法您可以离开测试被忽略了更多的“官方”版本,但如果你愿意的话,仍然可以随意执行。

答案 1 :(得分:30)

您还可以使用test category标记您不希望自动测试中包含的测试方法,例如

[TestCategory("IgnoreOnBuild")]

因此不使用[Ignore]属性。并将其与构建定义中的过滤器相结合,在Basic - >下。自动测试 - >测试源 - >测试用例过滤器:

TestCategory!=IgnoreOnBuild

答案 2 :(得分:3)

看起来还有其他方法可以使用testrunco​​nfig文件启用/禁用测试。但是,如果使用IgnoreAttribute,它会使用代码编译,因此无法轻松切换。

来自documentation

  

单元测试的Ignore属性与单元测试的源文件一起,以及测试的其他属性和源代码。这意味着,如果在“测试管理器”窗口中禁用单元测试,并在以后使用MSTest.exe命令行实用程序运行测试,则测试仍会运行。但是,如果使用Ignore属性标记单元测试,编译程序集,然后使用MSTest.exe运行测试,则测试不会运行。它不会运行,因为Ignore属性已成为测试的一部分。