当前位置:   article > 正文

C# 使用xUnit进行单元测试

C# 使用xUnit进行单元测试

目录

写在前面

操作步骤

 执行结果


写在前面

xUnit.net 是 NUnit 的作者Jim Newkirk搞的一个新的单元测试框架,目的是解决 NUnit 存在的一些问题和缺点,并在框架中加入一些最佳实践和扩展能力。

主要的改进点如下:

为每个测试方法产生一个对象实例

取消了 [SetUp] 和 [TearDown]

取消了 [ExpectedException]

类似于 Aspect 的功能

减少了自定义属性(Attribute)的数目

采用泛型

匿名委托

可扩展的断言

可扩展的测试方法

可扩展的测试类

总的来说用起来是比NUnit要简便了。

操作步骤

在目标类库的父目录下建立一个空的文件夹,命名为xUnitTester.Tests,进入该目录用命令行窗口执行:

dotnet new xunit

修改测试类代码:

  1. using NUnitTester;
  2. using System.Linq.Expressions;
  3. namespace xUnitTester.Tests;
  4. public class UnitTest1
  5. {
  6. private readonly DataChecker _dataChecker;
  7. public UnitTest1()
  8. {
  9. _dataChecker = new DataChecker();
  10. }
  11. /// <summary>
  12. /// 表示当前是测试方法 标记的测试方法不能有方法参数
  13. /// </summary>
  14. [Fact]
  15. public void Test1()
  16. {
  17. var result = _dataChecker.AddInt(1, 2);
  18. Assert.Equal(3, result);
  19. }
  20. /// <summary>
  21. /// 定义数据来源
  22. /// </summary>
  23. /// <param name="x"></param>
  24. /// <param name="y"></param>
  25. /// <param name="expression"></param>
  26. [Theory]
  27. [InlineData(1, 2, 3)]
  28. [InlineData(4, 2, 6)]
  29. [InlineData(5, 2, 7)]
  30. [InlineData(6, 2, 8)]
  31. public void Test2(int x, int y, int expression)
  32. {
  33. var result = _dataChecker.AddInt(x, y);
  34. Assert.Equal(expression, result);
  35. }
  36. }

目标类 DataChecker.cs 与前面的两篇中一样,这边也顺手贴一下

  1. public class DataChecker
  2. {
  3. public bool IsPrime(int candidate)
  4. {
  5. if (candidate == 1)
  6. {
  7. return true;
  8. }
  9. return false;
  10. }
  11. public int AddInt(int first, int second)
  12. {
  13. int sum = first;
  14. for (int i = 0; i < second; i++)
  15. {
  16. sum += 1;
  17. }
  18. return sum;
  19. }
  20. }

 执行结果

 dotnet test

也可以使用VS中的测试资源管理器,一次性对解决方案下所有的单元测试用例进行统一测试

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/37789
推荐阅读
相关标签
  

闽ICP备14008679号