C# 通过伪造调度对 System.Reactive 可观察对象进行单元测试 获取链接 Facebook X Pinterest 电子邮件 其他应用 四月 09, 2021 一、问题 假设有一个依赖时间的可观察对象,你需要编写不依赖时间的单元测试。依赖时间的可观察对象会使用超时、窗口(或缓冲)以及节流(或采样),现在需要对可观察对象进行单元测试,但单元测试的用时不要过长。 阅读全文
C# 对 System.Reactive 可观察对象进行单元测试 获取链接 Facebook X Pinterest 电子邮件 其他应用 四月 09, 2021 一、问题 假设程序的某一部分正在使用 IObservable<T> ,而你需要想办法对它进行单元测试。 二、解决方案 System.Reactive 有一些可以生成序列的运算符(比如 Return ),还有可以将响应式序列转换为常规集合或项的其他运算符(比如 SingleAsync )。可以使用 Return 之类的运算符来创建可观察依赖项的存根,使用 SingleAsync 之类的运算符来测试输出。 阅读全文
C# 对数据流网格进行单元测试 获取链接 Facebook X Pinterest 电子邮件 其他应用 四月 09, 2021 一、问题 假设在应用程序中有数据流网格,你需要确认它正常工作。 二、解决方案 数据流网格是独立的,它有自己的寿命,且本质上是异步的。因此,要测试数据流网格,最自然的方法是异步单元测试: 阅读全文
C# 对 async void 方法进行单元测试 获取链接 Facebook X Pinterest 电子邮件 其他应用 四月 09, 2021 一、问题 假设需要对某个 async void 方法进行单元测试。 二、解决方案 停止吧! 相对于解决这个问题,竭尽全力避免它才是更应该做的。如果能把 async void 方法改成 async Task 方法,那就再好不过了。 阅读全文
C# 对预期失败的 async 方法进行单元测试 获取链接 Facebook X Pinterest 电子邮件 其他应用 四月 09, 2021 一、问题 假设你需要编写单元测试来检查 async Task 方法的某次失败。 二、解决方案 如果在进行桌面端开发或服务器端开发,那么 MSTest 能够通过常规的 ExpectedException 属性来支持失败测试: 阅读全文
C# 对 async 方法进行单元测试 获取链接 Facebook X Pinterest 电子邮件 其他应用 四月 09, 2021 一、问题 假设需要对某个 async 方法进行单元测试。 二、解决方案 大多数现代单元测试框架支持 async Task 单元测试方法,包括 MSTest、NUnit、xUnit。从 Visual Studio 2012 起,MSTest 开始支持这些测试,如果使用别的单元测试框架,那么需要升级到最新版本。 阅读全文
类 ref 结构体(C# 7.2) 获取链接 Facebook X Pinterest 电子邮件 其他应用 四月 08, 2021 C# 7.2引入了类 ref 结构体的概念:只存在于栈内存上的结构体。与自定义task类型相似,很可能我们永远不需要自行声明类 ref 结构体,但我们所使用的framework中很可能内建类 ref 结构体。 阅读全文
使用 ref 参数或者in参数的扩展方法(C# 7.2) 获取链接 Facebook X Pinterest 电子邮件 其他应用 四月 08, 2021 在C# 7.2之前,任何扩展方法的第一个参数都必须是值参数。C# 7.2取消了这项限制,于是 ref 相关语义应用得更彻底了。 阅读全文
将结构体声明为只读(C# 7.2) 获取链接 Facebook X Pinterest 电子邮件 其他应用 四月 08, 2021 in 参数的主要作用是减少对结构体的复制从而提升性能。听起来很不错,但是关于C#,还有一个隐蔽的阻碍,需要格外小心。本节首先明确问题,然后介绍C# 7.2是如何解决它的。 阅读全文
in 参数(C# 7.2) 获取链接 Facebook X Pinterest 电子邮件 其他应用 四月 08, 2021 C# 7.2为方法参数引入了新修饰符 in 。该修饰符的使用方式与 ref 、 out 相同,但目的不同。一个带有 in 修饰符的参数,可以通过引用传递从而避免复制,同时可以保证参数值不被修改。在方法内部, in 参数的行为类似于 ref readonly 局部变量。该变量依然是由调用方传入的一个内存地址,因此要保证方法不会修改该值,否则修改结果会影响调用方,这样就违背了 in 参数的意义。 阅读全文
C# ref 局部变量和 ref return 获取链接 Facebook X Pinterest 电子邮件 其他应用 四月 08, 2021 C# 7中 ref 的很多相关特性是相互关联的。如果逐个介绍,很难体现出这些特性的优势。在描述这些特性时,给出的代码示例也会比一般例子看起来更刻意,旨在一次只展示一个特性点。下面介绍C# 7.0引入的两个特性,二者在C# 7.2中有所增强。首先介绍 ref 局部变量。 阅读全文
C# 回顾:ref 知多少 获取链接 Facebook X Pinterest 电子邮件 其他应用 四月 08, 2021 要理解C# 7的 ref 特性,需要认真回顾C# 6以前版本中 ref 参数的工作原理,首先是变量和值之间的区别。 阅读全文