NSubstitute是一个.Net环境使用的,简洁,语法友好的Mock库。语法简洁的缺点是有一些失败的用法很难察觉和检测。比如试图mock一个非虚拟成员-NSubstitute不能看到这些成员所以不能沟通sub.Received().NonVirtualCall()的问题。多亏了现在有Roslyn编译器。我们现在有了能检测这些问题的方法。

使用用法:

使用Nuget安装NSubstitute.Analyzers.CSharp库。

Install-Package NSubstitute.Analyzers.CSharp

能检测的特性列表如下:

NS1000

在类的非virtual成员上使用

  • Returns()
  • ReturnsForAnyArgs()
  • ReturnsNull()
  • ReturnsNullForAnyArgs()
  • Throws()
  • ThrowsForAnyArgs()等特性

NS1001

在类的非virtual成员上使用

  • Received()
  • ReceivedWithAnyArgs()
  • DidNotReceive()
  • DidNotReceiveWithAnyArgs()

等特性

NS1002

在类的非virtual成员上使用

  • When()
  • WhenForAnyArgs()

等特性

NS2000

使用Substitute.ForPartsOf 创建接口或者代理。 解决方法是使用Substitute.For代替Substitute.ForPartsOf

NS2001

使用NSubstitute mock没有暴露公共或者保护构造方法的类。

NS2002

使用NSubstitute mock没有暴露无参构造方法的类。

NS2003

使用NSubstitute mock 内部类。

NS2004

使用NSubstitute mock的时候传递了错误的构造参数。

NS2005

一次替代多个类型

NS2006

mock接口的时候传递了参数。 只要将参数移除就可以解决这个问题

参考:github目录

NSubstitute.Analyzers检测NSubstitute用法冲突的更多相关文章

  1. Linux下检测IP地址冲突及解决方法

    问题说明:在公司办公网内的一台物理机A上安装了linux系统(ip:192.168.9.120),在上面部署了jenkins,redmine,svn程序.由于是在办公网内,这台机器和同事电脑都是在同一 ...

  2. linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)

    本文中的脚本适用范围: 1)检测某些IP地址是否被占用: 2)检测网络中某些设备是否存活: 3)在分配新的ip地址之前,批量检测环境中是否存在冲突的机器 以上检测基于ICMP Ping报文,要求所有的 ...

  3. 检测IP地址冲突的shell脚本-check_server_ip_conflict.sh

    check_server_ip_conflict.sh 使用arping获取对应IP地址的MAC地址,如果和预料的不一致则报警: #!/bin/bash epg_addr_01="00:50 ...

  4. Unity射线检测的用法总结

    RayCast 射线检测 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心 ...

  5. 【IP】Linux中检测IP地址冲突

    在Windows系统中,如果本地网络IP地址出现冲突,会出现图标提示. 在Linux系统中,并没有提供相关的功能,如果本地网络采用静态IP地址配置,出现比较奇怪的网络连接问题,如ssh连接复位,可以考 ...

  6. .NET测试--模拟框架NSubstitute

    .NET测试--模拟框架NSubstitute .NET测试 NSubstitute在GitHub的开源地址:https://github.com/nsubstitute/nsubstitute/do ...

  7. Mego开发文档 - 处理并发冲突

    处理并发冲突 数据库并发是指多个进程或用户同时访问或更改数据库中的相同数据的情况.并发控制是指用于确保存在并发更改时数据一致性的特定机制. Mego实现了乐观并发控制,这意味着它可以让多个进程或用户独 ...

  8. 触屏设备上的多点触碰检测C++代码实现

    转自:http://aigo.iteye.com/blog/2272698 代码还是参考自Epic官方的塔防项目:StrategyGame 看了下C++的API,现成的API中貌似只支持单点触碰检测, ...

  9. 图解ARP协议(五)免费ARP:地址冲突了肿么办?

    一.免费ARP概述 网络世界纷繁复杂,除了各种黑客攻击行为对网络能造成实际破坏之外,还有一类安全问题或泛安全问题,看上去问题不大,但其实仍然可以造成极大的杀伤力.今天跟大家探讨的,也是技术原理比较简单 ...

随机推荐

  1. Python&Selenium&Unittest&BeautifuReport 自动化测试并生成HTML自动化测试报告

    一.摘要 本篇博文将介绍如何借助BeautifulReport和HTML模版,生成HTML测试报告的BeautifulReport 源码Clone地址为 https://github.com/Test ...

  2. FFmpeg常用命令学习笔记(五)裁剪与合并命令

    裁剪与合并命令 1.音视频裁剪 ffmpeg -i input.mp4 -ss 00:01:00 -t 10 out.mp4 -ss:起始时间(HH:MM:SS).-t:裁剪时长(秒) 2.视频合并 ...

  3. 数据统计,包括mysql和MongoDB

    select ct.dt, COUNT(DISTINCT c.id) from tms_service_customer c, tms_dispatch_details d, (select DIST ...

  4. BZOJ 2049: [Sdoi2008]Cave 洞穴勘测 (LCT维护连通性)

    直接把x设为根,然后查询y所在联通块的根是不是x就行了. CODE #include <cstdio> #include <cstring> #include <algo ...

  5. 【SaltStack官方版】—— returners——返回器

    ETURNERS 返回器 By default the return values of the commands sent to the Salt minions are returned to t ...

  6. hdu 6074 Phone Call

    题 O∧O http://acm.hdu.edu.cn/showproblem.php?pid=6074 2017 Multi-University Training Contest - Team 4 ...

  7. docker国内镜像地址

    https://registry.docker-cn.com http://hub-mirror.c.163.com https://docker.mirrors.ustc.edu.cn

  8. EasyLogging++学习笔记(1)—— 简要介绍

    对于有开发经验的程序员来说,记录程序执行日志是一件必不可少的事情.通过查看和分析日志信息,不仅可以有效地帮助我们调试程序,而且当程序正式发布运行之后,更是可以帮助我们快速.准确地定位问题.在现在这个开 ...

  9. OFDM时域削峰法降峰均比的原理及影响

    以下是对实验室师兄答疑的转述,经加工后的文字不可避免的存在一些噪声,仅供参考: 时域削峰为非线性变换,效果上相当于将时域中功率较大值的信号点,减去一个合适的“抵消”信号点的功率,使其降低到所设置的门限 ...

  10. org.apache.commons.io.FilenameUtils 常用的方法

    /** * getExtension * 获取文件的后缀名 */ public static void testGetExtension() { String extension = Filename ...