本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
.Net使用Xunit工具进行单元测试
liujianhua · 173浏览 · 发布于2022-06-24 +关注

这篇文章介绍了.Net使用Xunit工具进行单元测试的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

不管你爱与不爱,单元测试对于一个软件的长治久安还是必不可少的一环。在Visual Studio 2012后,VS中的测试浏览器也能与第三方的集成了,用起来还是非常方便的。目前在.Net框架下的测试工具主要有Nunit、内置的MSTest以及Xunit这三个工具,本文就简单的介绍一下如何在VS中使用XUnit这个测试框架的后起之秀。

安装Xunit:

Xunit的安装现在不需要插件支持了,直接使用NuGet安装如下两个库即可:

PM> Install-Package xunit
PM> Install-Package xunit.runner.visualstudio -Pre (Visual Studio测试浏览器支持, VS2015目前必须装Pre的)


编写测试用例: 

一个简单的测试用例如下:

public class TestClass1
{
    [Fact]
    public void testMax()
    {
        Assert.Equal(3, Math.Max(3, 2));
    }

    [Fact]
    public void testFail()
    {
        Assert.Equal(2, Math.Max(3, 2));
    }
}


执行测试用例 

在测试浏览器中执行RunAll即可(修改后不用编译,它会自动编译)

编辑

测试方式说明:

声明测试用例:

Xunit里面不需要TestClass之类Attribute来标记测试用例类,只需要满足如下条件即可:

  • 测试类必须是public的

  • 测试用例用FactAttribute标记


断言:

Assert类用来验证测试测试函数的输出结果。

Assert.Equal(3, Math.Max(3, 2));


也可以使用一些扩展的断言库,常用的就是xunit.should库,它是以扩展函数的方式进行验证,看起来更加舒服。 

PM> Install-Package xunit.should

 

Math.Max(3, 2).ShouldBe(3);


 

不过,这个库和新版本的XUnit适配不是很好,我这里写了一个简单的版本: 


static class AssertExtension
{
    public static void ShouldBe<T>(this T value, T exprected)
    {
        if(Equals(value, exprected))
            return;

        var msg = $"与预期结果不一致,当前值是 '{format(value)}', 期望值是 '{format(exprected)}'";
        throw new InvalidOperationException(msg);
    }
    public static void ShouldNotBe<T>(this T value, T notExprected)
    {
        if (!Equals(value, notExprected))
           return;

        var msg = $"与预期结果不一致,当前值不应该是 '{format(notExprected)}' ";
        throw new InvalidOperationException(msg);
    }
    static string format(object value)
    {
        return value == null ? "NULL" : value.ToString();
    }
}


构建和析构: 

Xunit里面并不是通过SetUp和TearDown标记来表明测试用例的构建和析构操作,它每次执行测试用例的时候都会插件测试用例类,执行完成后,如果其实现了IDispose接口,则会调用Dispose函数,更加简洁明了。也就是说:

  • 在测试用例类的构造函数指向数据构建操作

  • 在Dispose函数中指向数据清理操作

异常测试

Xunit并不是通过Attribute来标记异常捕获的,而是直接使用Assert.Throws断言函数来验证异常。

public class TestClass1
{
    [Fact]
    public void testException()
    {
       Assert.Throws<InvalidOperationException>(() => operation());
    }

    void operation()
    {
        throw new InvalidOperationException();
    }
}


更改测试用例名称: 

[Fact(DisplayName = "Max函数测试")]


跳过测试用例: 

[Fact(Skip ="重构未完成")]


分组: 

[Trait("Group", "Category")]



到此这篇关于.Net使用Xunit工具进行单元测试的文章就介绍到这了。


相关推荐

PHP实现部分字符隐藏

沙雕mars · 1324浏览 · 2019-04-28 09:47:56
Java中ArrayList和LinkedList区别

kenrry1992 · 908浏览 · 2019-05-08 21:14:54
Tomcat 下载及安装配置

manongba · 968浏览 · 2019-05-13 21:03:56
JAVA变量介绍

manongba · 961浏览 · 2019-05-13 21:05:52
什么是SpringBoot

iamitnan · 1086浏览 · 2019-05-14 22:20:36
加载中

0评论

评论
分类专栏
小鸟云服务器
扫码进入手机网页