首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

重温《单元测试艺术》,总结常用知识点

选择单元测试框架 《单元测试艺术》书中推荐NUnit,VS2019新建单元测试项目只有MSTest V2、NUnit和xUnit三种。...微软自己项目也不一定会使用MSTest,例如CoreFX就在用xUnit。 不过我更喜欢MSTest V2,因为从旧MSTest升级过来几乎没有学习成本,也不用向上司解释为什么要换框架。...MSTest已经是个开源项目,WindowsCommunityToolkit就在用MSTest。 3. 怎么给单元测试命名 万事起头难,最难就是命名。...前面定义Stub和Mock都使用了Fake-前缀,因为在类避免使用"mock"和"stub",那么这个类对象就可以具有两种行为方式,以后再不同测试重用。 7....8.3 用代码审查确保代码覆盖率 代码覆盖率100%说明什么呢?如果没有做代码审查,这个覆盖率不能说明什么。也许这些测试连断言都没有,只是为了达到更高覆盖率所写代码。

1.5K31
您找到你想要的搜索结果了吗?
是的
没有找到

输入URL到渲染过程到底发生了什么

,再次存入浏览器缓存;生效则返回304,并从缓存读取资源。...为什么TCP建立一定要三次呢?两次不行吗?...原因:双方要明确对方接收能力都是正常,(客户端之后,服务端可以确定客户端发送能力正常,服务端发送给客户端,客户端可以确定服务端接收和发送能力正常,最后客户端发送确认,来确定客户端接收能力。...为什么要四次握手而不是三次、两次因为建立一旦连接,双方既是发送方,又是接收方,为了保证在最后断开时候,客户端发送最后一个ACK报文段能够被服务器接收到。...浏览器无法预估脚本具体做了什么操作,索性全部暂停,等脚本执行完,浏览器再继续向下解析。

1K20

对比MS Test与NUnit Test框架

[AssemblyInitialize] -- 定义测试Assembly初始化函数,每当这个Assembly有测试函数被运行前,会被调用一次(在Assembly第一个测试函数运行前会被调用)。...三、同时支持NUnit和MSTest 通过上面的介绍,我们可以看到这两个框架只是标签写法不一样,它们具体功能都是一样。 所以可以通过宏判断来同时支持这两个框架。...TestInitialize = NUnit.Framework.SetUpAttribute; using TestCleanup = NUnit.Framework.TearDownAttribute; using TestContext...2、运行时区别 看网上帖子讲,NUnit不是并行执行测试,所有的测试都是放在一个线程当中。 而MSTest每个测试都被放在单独线程当中。...而在MSTest,ClassCleanup在AssemblyCleanup前执行,但是并不是最后一个测试完毕后马上执行。 4、NUnit支持测试类继承,但是MSTest不支持。

3.4K20

从输入URL到渲染过程到底发生了什么

,再次存入浏览器缓存;生效则返回304,并从缓存读取资源。...为什么TCP建立一定要三次呢?两次不行吗?...原因:双方要明确对方接收能力都是正常,(客户端之后,服务端可以确定客户端发送能力正常,服务端发送给客户端,客户端可以确定服务端接收和发送能力正常,最后客户端发送确认,来确定客户端接收能力。...为什么要四次握手而不是三次、两次因为建立一旦连接,双方既是发送方,又是接收方,为了保证在最后断开时候,客户端发送最后一个ACK报文段能够被服务器接收到。...浏览器无法预估脚本具体做了什么操作,索性全部暂停,等脚本执行完,浏览器再继续向下解析。

1.5K40

将 WPF、UWP 以及其他各种类型旧 csproj 迁移成基于 Microsoft.NET.Sdk 新 csproj

基于 .NET Framework 4.7.1,引用 MSTest v2,测试 Walterlv.Demo 项目,引用了一个 .NET Framework 类库。 其依赖显示也非常简洁: ?...从对比我们就能明显看出新 csproj 文件优势: 文件小,易读易写 在版本管理更容易解冲突 NuGet 包引用没有路径要求,这意味着开发者可以任意指定 NuGet 包位置 嵌套引用不需要重复指定...目前没有自动迁移方法,至少在我实际迁移过程,只有少数项目能够直接编译通过。由于以上我小伙伴给出了具体迁移方法,所以此处我只给出迁移思路。...第三步:安装此前已经安装好 NuGet 包,或者把原来 packages.config 文件里 NuGet 配置复制到 csproj 文件,并统一修改格式: 从 <package id="<em>MSTest</em>.TestAdapter...<em>什么</em>都不用管<em>的</em>第三方迁移方案 感谢小伙伴 KodamaSakuno (神樹桜乃) <em>的</em>指导,我们可以有第三方<em>的</em>解决方案 MSBuild.Sdk.Extras 来更简单地完成迁移。

1.4K20

Python进阶——什么是上下文管理器?

我们常常听到上下文管理器究竟是什么? 这篇文章我们就来学习一下 Python 上下文管理器,以及 with 运行原理。...但是,with 后面的表达式是可以任意写吗? 答案是否定。要想使用 with 语法块,with 后面的对象需要实现「上下文管理器协议」。 什么是「上下文管理器协议」?...这样一来,我们就可以把 TestContext 当做一个「上下文管理器」来使用,也就是通过 with TestContext() as t 方式来执行。...语法块发生了异常,__exit__ 会把这个异常通过生成器,传入到 with 语法块内,也就是把异常抛给调用者 再来看 closing 实现,closing 方法就是在 __exit__ 方法调用了自定义对象...使用场景 学习完了上下文管理器,那么它们具体会用在什么场景呢? 下面我举几个常用例子来演示下,你可以参考一下结合自己场景使用。

43020

TDD测试驱动开发实践心得

所以在开发时,也考虑过该用什么技术及怎么来做。后面还是选择了Spring Boot来完成这个项目,因为毕竟Spring Boot稳定性及可靠性都是可以信任。...2.2 实践TDD一些心得 虽然项目不多,每年只搞了一个,但也已经对我编程理念产生了重大影响,至此为止,我已深信TDD作用是非常有效,而且也是一个优秀程序员必须也应该去做到。...而且笔者认为一个优秀程序员只需要少数时间,就能适应并且快速熟悉单元测试工作。 当然,这篇文章并不是详细阐述TDD,所以这个点到此为止,笔者后续会就TDD再来专门阐述为什么TDD会加快代码开发。...很多时候,我们代码依赖一些第三方或我们在这个测试不关心另一个维度东西实际运行情况,在单元测试场景,我们需要覆盖如下场景: 假设一个第三方功能返回正常下,我们代码逻辑如何 又假设一个第三方功能返回错误情况下...什么叫正常路径?就是哗哗哗一路运行下去,结果正常。比如新增一个用户,最终新增成功。这就叫正常路径。 后面我意识到了这样问题,这样覆盖率其实非常少,所以我就开始尝试把不正常路径添加上去。

68410

不再为命名而苦恼!使用 MSTestEnhancer 单元测试扩展,写契约就够了

测试用例代码 } [TestMethod] public void 被测方法名_条件2_预期2() { // 测试用例代码 } } 这是以 MSTest...在这个例子,我们写了中文 条件 和 预期,在实际编写时,可能是更加复杂短句,例如:ArgumentNull、ThrowsArgumentNullException,于是最终方法名可能是 TargetMethod_ArgumentNull_ThrowsArgumentNullException...不要紧,在工具也能显示中文契约,Visual Studio 测试管理器和 ReSharper 测试结果页都支持显示这些中文契约。以下是 ReSharper 单元测试结果页视图: ?..."{0} 不是质数".Test((int num) => { // 测试用例代码 }).WithArguments(1, 4); 也可以添加多个参数(最多支持 8 个): "契约 1,参数可以带...异步单元测试 Test 方法传入每个 Action 都支持 async 关键字,并会在执行测试用例时等待异步操作结束。 额外黑科技 MSTest v2 支持嵌套类型单元测试。

65610

【计算机网络】我与张三 DNS 解析过程,浏览器输入URL 回车后发生了什么

# 视频解析 方便大家理解,我在 b 站发布了一期视频,欢迎大家查收 【计网】浏览器输入url按下回车后发生了什么?...上篇TCP/IP协议 视频⾥说过,⽹络请求是根据 ip 地址进⾏访问 ⽽只输⼊了b站域名我们 为什么电脑不会给我们打开 a 站、c 站,抑或是⼀些奇怪站点呢?...⼦在外⾯要保护好⾃⼰ 这⾥奖学⾦ Excel 就相当于权限域名服务器 果然在⾥头找到张三电话,也就是bilibili ip 地址 我赶紧给他打了过去,结束这要命⼀天 # 总结 这个在浏览器输...⼊地址流程,其实也就是DNS⼯作流程 简单总结一下: 第一步:在浏览器输入www.bilibili.com域名,操作系统会先检查自己本地hosts文件 是否有这个域名映射关系,如果有,就先调用这个...第二步:如果hosts文件没有,则查询本地DNS解析器缓存,如果有,则完成地址解析。 第三步:如果本地DNS解析器缓存没有,则去查找本地DNS服务器,如果查到,完成解析。

1.4K40

【计算机网络】我与张三 DNS 解析过程,浏览器输入URL 回车后发生了什么

上篇TCP/IP协议 视频⾥说过,⽹络请求是根据 ip 地址进⾏访问 ⽽只输⼊了b站域名我们 为什么电脑不会给我们打开 a 站、c 站,抑或是⼀些奇怪站点呢?...⽪电话呢?...⼦在外⾯要保护好⾃⼰ 这⾥奖学⾦ Excel 就相当于权限域名服务器 果然在⾥头找到张三电话,也就是bilibili ip 地址 我赶紧给他打了过去,结束这要命⼀天 总结 这个在浏览器输⼊...地址流程,其实也就是DNS⼯作流程 简单总结一下: 第一步:在浏览器输入www.bilibili.com域名,操作系统会先检查自己本地hosts文件 是否有这个域名映射关系,如果有,就先调用这个...第二步:如果hosts文件没有,则查询本地DNS解析器缓存,如果有,则完成地址解析。 第三步:如果本地DNS解析器缓存没有,则去查找本地DNS服务器,如果查到,完成解析。

1.5K30

Newbe.Mahua 测试与调试

引入测试框架 .Net测试框架众多,主流MSTest、NUnit和XUnit。本教程选择XUnit进行演示。...真正勇士,就绿了它们! 需求变化 需求变了,只有消息当中有”收到回复”这个字符串,那么才需要回,并且要删除其中”收到回复”字符串。 在测试项目新加一个实现类,来实现上面的业务逻辑。...一个测试消息包含”收到回复”,另一个则不包含。...电脑是不会错。 其实上面的业务逻辑是存在BUG:QQ无法发送空消息,所以,如果对方消息只包含”收到回复”四个字,那么真正运行时候会报错。...启动调试 修改项目属性调试选项卡配置,并且将插件项目设置为启动项目,F5启动调试,下断点,命中,就这么简单。

2.1K00

pprof 原理与实现

能否选择性在合适阶段对生产环境应用进行 pprof 开启 / 关闭操作? pprof 原理是什么?...API 带来风险 整体流程基本就是 stackdump 所有协程信息流程, 差别不大没什么好讲, 不熟悉可以去看下 stack 对应章节 pprof/threadcreate 可能会有人想问,...我们通常只关注 goroutine 就够了, 为什么还需要对线程一些情况进行追踪?..., block 埋点会额外存在于 chan , 每次 block 记录是前后两个 cpu 周期 差值 (cycles) 需要注意是 cputicks 可能在不同系统上存在一些问题[4]....暂不放在这边讨论 pprof/profile 上面分析都属于 runtime 在运行过程自动采用保存数据后用户进行观察, profile 则是用户选择指定周期内 CPU Profiling #

2.3K20

transactionscope mysql_c# – 嵌套TransactionScope在测试失败

大家好,又见面了,我是你们朋友全栈君。 我正在使用MSTest通过 MySQL Connector和使用EntityFramework 4.3对MysqL 5.5.19数据库运行一些自动化测试....我正在尝试在我数据库访问类库中使用TransactionScope在需要时执行回滚.另外,在我测试代码,我希望在每次测试之前使用TransactionScope将数据库恢复到已知状态.我使用TestInitialize...我在这里遇到问题是,由于它使用MyTestInitialize函数创建环境事务范围,因此我测试Assert调用不会发生,因为事务范围回滚发生了 – 至少这是我认为正在发生事情.我验证了Transaction.Current.TransactionInformation.Statusis...TransactionStatus.Aborted,所以我觉得很确定这是发生了什么....TransactionScope(TransactionScopeOption.RequiresNew)) 这里意图是我可以嵌套这些事务范围,让我生产代码回滚发生,然后仍然在我测试代码检查我

2K10

.Net Core迁移到MSBuild平台(二)

一、前言 在上一篇文章.Net Core迁移到MSBuild多平台编译问题中,简单讲了下新项目配置文件节点配置,这篇我将用一些例子来详细讲下从project.json迁移到msbuild过程节点配置...做过完整迁移新项目配置文件朋友,肯定会觉得新项目配置文件Msbuild配置太扯了,虽然能直接编辑项目文件,但整个配置文件没有了像project.json智能提示,当你在打开文件后你就会发现以前很轻松能写出来...json配置,现在已经什么都写不出来了,而且也没有文档可以参考,一般情况下,往往开发人员就会关掉项目文件,打开NuGet管理器来进行包引用,但是这真的够用吗?..." } 在csproj配置并没有对应定义,它只会有项目文件名相同如:MyProjectName.csproj 程序集版本 (Version) { "version": "1.0.0-alpha...{ "testRunner": "mstest", "dependencies": { "dotnet-test-mstest": "" } }

1.7K20
领券