Assert.Inconclusive 和 IgnoreAttribute

2024-01-23

正确的使用方法是什么Assert.Inconclusive and IgnoreAttribute在 MS 单元测试框架中?

我们正在使用Assert.Inconclusive主要用于测试:

  • 尚未实施
  • 不知何故损坏或不完整=需要进一步关注
  • 当测试主体因任何原因被注释掉时

我们这样做是因为:

  • 不确定的测试可以留言
  • 我们希望在 TFS 的测试结果中看到这样的测试

我们的问题是Inconclusive测试在 TFS 和 Resharper 中都被标记为错误。如果我们使用IgnoreAttribute相反,我们将在 Resharper 中看到这些测试,但 MS 测试运行器和 TFS 将根本忽略它们。使用IgnoreAttribute在 TFS 和 MS Test runner 中,就像评论整个测试一样,这是无用的。


我还看到当前实施中的困境。

  • Inconclusive断言包含在 TRX 报告中,但 mstest.exe(以及 vstest.console.exe)将返回1(意义error) 执行后。
  • 测试方法与Ignore属性不会被报告为错误,但它们是完全隐藏来自TRX报告。

我个人的理解如下:

use the [Ignore]属性(暂时)禁用/跳过该方法:

[TestMethod]
[Ignore] // <== disabled through "Ignore" attribute
public void Test001()
{
   //execute some stuff ...
   Assert.IsTrue(...);

   //execute some stuff ...
   Assert.AreEqual(...);
}

do not滥用Inconclusive为此目的断言:

[TestMethod]
public void Test002()
{
    Assert.Inconclusive(); // <== misuse of "Inconclusive" to skip this test

    //execute some stuff ...
}

反而,Inconclusive应该使用有条件的:仅当我们无法判断要测试的组件是否按预期工作时。
例如,如果external我们依赖的资源在测试执行时不可用:

[TestMethod]
public void Test003()
{
    //check if the server is running,
    //otherwise can can't test our local client component!
    if (!WebServiceAvailable())
    {
        Assert.Inconclusive(); // <== skip remaining code because the resource is not available
    }

    //execute some stuff ...
    Assert.AreEqual(...);

    //execute some stuff ...
    Assert.AreEqual(...);
}

_ _

结论:
禁用/跳过测试的逻辑方法是使用[Ignore]属性。
我清楚地看到当前的行为mstest.exe不报告任何被忽略的测试bug这应该得到解决。

请随意对以下错误报告进行投票:

  • https://connect.microsoft.com/VisualStudio/feedback/details/779743/ https://connect.microsoft.com/VisualStudio/feedback/details/779743/
  • http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2088845 http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2088845
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Assert.Inconclusive 和 IgnoreAttribute 的相关文章

  • C# 如何使用 CallNtPowerInformation 和 Interop 来获取 SYSTEM_POWER_INFORMATION

    我正在尝试编写一个小程序 该程序作为服务运行并监视用户是否处于活动状态 如果用户空闲 没有鼠标 键盘 一个小时 则某些进程将被终止 如果用户使用 user32 dll 中的 LASTINPUTINFO 运行它 它就可以工作 但它不能作为服务
  • 处理双 NaN 和 Inf 时的 ILASM 问题

    我创建了一个简单的程序 并初始化了双精度类型值 var a double NaN 我使用 Visual Studio 2019 net Framework 4 5 构建项目 并使用 ILDASM exe 版本 4 0 30319 0 将其反
  • KeyValuePair - 没有无参数构造函数?

    我有一个具有 KeyValuePair 类型属性的对象 我想从数据库读取一些数据并将结果存储在这个 KeyValuePair 类型字段中 myObject KeyValuePairs ctx ExecuteQuery
  • WCF WebHttp 混合身份验证(基本和匿名)

    所有这些都与 WebHttp 绑定有关 托管在自定义服务主机中 IIS 目前不是一个选项 我已经实现了自定义 UserNamePasswordValidator 和自定义 IAuthorizationPolicy 当我将端点的绑定配置为使用
  • Resharper 代码清理在 Unityconfig.cs 上不可用

    我在用着ReSharper 2016 3 2 它工作得很好 但我遇到了一个奇怪的问题 code cleanup该功能不适用于UnityConfig cs The Refactor上下文菜单被禁用 清理热键显示以下消息 组合键 Ctrl E
  • 从另一个 FORM 中取回隐藏的 FORM

    我有两种形式Form1 and Form2 我正在打开Form2 from Form1 on button Click Form2 obj2 new Form2 this Visible false obj2 Show 然后我想回来Form
  • 与 Dagger 一起使用时,Espresso 生成 FileNotFoundException

    我一直在研究旧版 Android 应用程序 尝试为其添加测试和适当的架构 该应用程序有一个主要LaunchActivity它在启动时运行一系列检查 最初 该活动使用 Dagger 来 注入依赖项 活动将使用它来运行检查 但效果相当糟糕 我转
  • Nhibernate:连接表并从其他表获取单列

    我有以下表格 create table Users Id uniqueidentifier primary key InfoId uniqueidentifier not null unique Password nvarchar 255
  • PrivateObject 找不到属性

    我的结构基本上如下所示 abstract class A protected string Identificator get set private void DoSomething DoSomethingSpecific protect
  • 如何使用 VB.NET 打开受密码保护的共享网络文件夹?

    我需要在网络上打开受密码保护的共享文件夹才能访问 Access 97 数据库 如何打开文件夹并输入密码 在这里找到http www mredkj com vbnet vbnetmapdrive html http www mredkj co
  • IDisposable 的显式实现

    虽然有很多关于IDisposable在 SO 上找到 我还没有找到答案 我通常遵循这样的做法 当我的一个班级拥有一个IDisposable对象然后它也实现IDisposable并打电话Dispose在拥有的对象上 然而最近我遇到了一个类 它
  • 如何使用 WebResponse 下载 .wmv 文件

    我使用以下代码通过 WebResponse 获取 wmv 文件 我正在使用一个线程来调用这个函数 static void GetPage object data Cast the object to a ThreadInfo ThreadI
  • 寻找网站测试自动化的方法

    我们开发定制调查网站 我正在寻找一种方法来自动化这些网站的模式测试 调查通常包含许多复杂的规则和分支 这些规则和分支也会根据项目的响应方式而触发 所有调查在发布给客户之前都经过严格测试 此测试需要大量的手动工作 我想了解一些可以通过回答问题
  • 如何为 LINQ 查询构建动态 FROM 子句?

    我有一个标准 LINQ 查询 var list from x in SomeDataContext ViewName where Rest of where clause select x 我想知道是否可以构建动态 LINQ 查询 以便我可
  • CLSCompliant(true) 拖入未使用的引用

    任何人都可以explain以下行为 总之 如果您创建多个符合 CLS 标准Visual Studio 2008 中的库并让它们共享公共命名空间根 引用另一个库的库将require对该库的引用的引用 即使它不消耗它们 用一句话来解释是相当困难
  • 忽略挂起的更改中的某些文件

    这是我的问题 我已经更改了解决方案中的某些文件 假设是 Web config 并且永远不想签入 因为这些更改仅涉及我的计算机 有没有办法在 TFS 中忽略某个文件中的更改并将其从挂起的更改窗口中删除 当然 我可以在每次签入时跳过这个文件 但
  • 在 .Net 应用程序中使用 Active Directory Web 服务

    我正在尝试构建一个 Net 应用程序来询问 Active Directory 编辑 我需要使用 Web 服务来执行此操作 因为我将使用需要使用 Web 服务的第三方工作流工具从 Sharepoint 工作流与 AD 进行通信 根据我的研究
  • C# 转换为小数

    如果有的话 有什么区别 decimal d decimal myDouble decimal d new decimal myDouble decimal d Convert ToDecimal myDouble 没有区别 如果你看一下源码
  • 如何将 Integer8 值转换为 DateTime?

    如何将 Integer8 类型值转换为 DateTime 类型值 特别是 我正在尝试获得帐户过期采用人类可读形式的 Active Directory 用户属性 SearchResult GetDirectoryEntry Propertie
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式

随机推荐