c# list基于属性去重_C#中基于属性的测试简介

c# list基于属性去重

介绍

到目前为止,我们在这里此处的前两篇博客文章中已经讨论了基于属性的测试的好处。 我相信你们大多数人 这个概念仍然很抽象。 我们已经看到了这项技术,但是如何在C#中实现呢? 在本系列中,我们将使用TDD和基于属性的测试来完成解决Diamond Kata的所有步骤。

钻石卡塔

给定输入字母,打印以A开头且最宽的字母为字母的菱形。

例如,对于输入:D

---A---
--B-B--
-C---C-
D-----D
-C---C-
--B-B--
---A---

为什么选择这个特定的Kata? 好吧,如果您尝试使用基于示例的测试来解决它,则实际上需要进行26个测试以确保其正常工作。 它看起来似乎不是很多测试,但是如果您尝试一下,您很快就会发现前几个测试是微不足道的,并且随着您接近Z,测试变得越来越难以阅读和编写。 通常,它是一种代码气味,表明某些基于属性的测试将是更好的方法。

TDD

在本系列中,我们还将使用TDD,并且您会发现,与基于示例的测试相比,基于属性的测试要容易得多。 因此,对于我们这样的优秀TDD从业人员,我们将从可以想到的最简单的算法实现开始。

public class Diamond
{
    private static IEnumerable< string > Generate ( char c )
    {
        yield return "A" ;
    }
}

容易吧? 它仅适用于A情况,但这是一个很好的起点。

我已经听到你们中间的纯粹主义者了。

这不是做TDD的正确方法! 红色->绿色->重构! 您应该从失败的测试开始,而不是从实现开始。

您没看错,但是让我们在这里变得现实。 这只是一个起点,我保证今后我们会做更好的TDD:D。

工具

基于属性的测试是一个非常简单的概念,但是生成适当的伪随机输入可能比看起来困难。 对我们来说幸运的是,其他人解决了这个问题并构建了出色的工具。 在我们的例子中,我们将使用FsCheck ,这是为F#设计的基于属性的测试框架。

我很困惑,我们是用C#还是F#来做?

那就是.NET的魅力,即使该库是为F#编写的,所有.NET语言都可以编译为中间语言(IL或MSIL) ,因此可以互操作。 这意味着我们可以从C#调用该库。

安装NuGet软件包,即可开始使用。

dotnet add package FsCheck --version2.14 . 2
dotnet add package FsCheck.Xunit --version 2.14 . 2

结束语

我认为我们具有开始的所有先决条件。 请继续关注我们将执行第一个测试的下一篇文章

先前发布在 https://blog.miguelbernard.com/how-to-get-started-with-property-based-testing-in-csharp/

翻译自: https://hackernoon.com/introduction-to-property-based-testing-in-c-c6w3uxz

c# list基于属性去重

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值