xUnit安装及注意事项

前言

对于单元测试,想必大家都已再熟悉不过了,同时单元测试的重要性也越发突出,在招聘中也特别强调单元测试,但是对于微软内置的单元测试还是太过于繁琐,于是都在寻找一种简洁并且更加轻量的测试工具。用的最多的莫过于Nuit和xUnit了,关于Nuit就不再介绍,请参考园友【田园里的蟋蟀】文章,由于早期的xNunit安装已经被弃用,所以需要注意,下面只是简单的说明其安装过程,特此记录,以备忘。

话题

首先新建一个带有单元测试的应用程序,在此之前得注意下:如果你之前安装了Visual Studio Runner VSIX扩展,你必须首先卸载它,因为最新版本已经通过NuGet程序包来下载,在工具->扩展和更新中卸载其扩展,然后告知你重启即可。可能你在运行测试时也会出现问题,可能是因为Runner缓存的缘故,此时你应该关闭VS,然后删除这个文件夹%TEMP%\VisualStudioTestExplorerExtensions

 

接下来就是在单元测试中通过NuGet安装xUnit程序包了,输入xunit,接着如图所示安装Xunit.net

通过新建的测试会默认添加一个类,此类如下:

1
2
3
4
5
6
7
8
[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
    }
}

接下来我们需要用到我们安装的xUnit,首先添加引用XUnit,然后将类中的方法修改为Fact而无需对类进行特性识别并进行测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class UnitTest1
{
    [Fact]
    public void TestMethod1()
    {
        Xunit.Assert.Equal(4, Add(2, 3));
    }
 
    int Add(int x, int y)
    {
        return x + y;
    }
}

然后打开:测试->窗口->测试资源管理器,左侧会出现测试窗口,点击全部运行,结果如下:

如上述图所示,此时只会显示生成成功,并未出现我们想要的结果。

注意事项

其实此时的测试管理器根本就未运行单元测试,必须要借助xUnit中的运行环境利用测试管理器来运行VS中的测试,此时我们继续在单元测试中通过NuGet安装xunit.runner.visualstudio,然后重新生成下,你会发现出现如下的结果:

这就说明添加的程序包已经起做用了,接下来你只需点击全部运行或者把鼠标放在通过上,出现运行点击即可,结果如下:

根据方法Equal中的第一个参数你需要测试的数据和第二个参数你实际的数据来判断是否相等,很明显结果错误,我们将其修改为相等再试试,结果如下,通过:

如果你是在控制器程序中进行单元测试,添加xunit.runner.console即可。

总结

xUnit是Nuit的升级版本,并且xUnit在VS2015上以及其他比如Xamarin中也已经得到了具体实现,所以利用它来进行单元测试再好不过了,当然你也不用担心收费,因为它是开源的。

参考资料  

官方文档:Running xUnit.net tests in Visual Studio  

github:xunit-github


为了方便大家在移动端也能看到我分享的博文,现已注册个人公众号,扫描上方左边二维码即可,欢迎大家关注,有时间会及时分享相关技术博文。

感谢花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让楼主能喝上一杯咖啡,在此谢过了!
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!
本文版权归作者和博客园共有,来源网址:http://www.cnblogs.com/CreateMyself)/欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   Jeffcky  阅读(4195)  评论(2编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示