xUnit 单元测试

一、xUnit 单元测试

官网地址:Home > xUnit.net

1、概述

1.1、新建个控制台项目

cs 复制代码
public class Class1
    {
        public int Add(int x, int y)
        {
            return x + y;
        }

    }

2、建个xUnit测试项目

cs 复制代码
public class UnitTest1
    {
        [Fact]
        public void Test1()
        {
            Class1 class1 = new Class1();
            int sum = class1.Add(2, 3);
            Assert.Equal(5, sum);
        }
    }


鼠标放到方法上,右键运行测试即可
2、用法

2.1、基础应用

cs 复制代码
    public class UnitTest1
    {
        private readonly ITestOutputHelper _outputHelper;
        public UnitTest1(ITestOutputHelper testOutput)
        {
            _outputHelper = testOutput;
        }

        [Fact]
        //[Trait("name","kawa1")]
        public void Test1()
        {
            _outputHelper.WriteLine("第一个测试");//自定义测试输出信息
            Class1 class1 = new Class1();
            int sum = class1.Add(2, 3);
            Assert.Equal(5, sum);//以下断言皆为true

            string name = "come kawa";
            Assert.True(1==1);

            Assert.StartsWith("come",name);
            Assert.Contains("ka", name);
            Assert.NotEqual("come ka", name);
            Assert.Matches(@"^[a-z]*\s[a-z]*", name);

            Assert.InRange(sum, 3.1, 6.9);//是否在某一范围

            Assert.NotNull(name);

            Assert.IsType<Class1>(class1);

        }
 
        
    }



        [Fact(Skip = "不跑这个测试")]//忽略测试
        [Trait("name","kawa1")] //分组

2.2、数据驱动测试

cs 复制代码
        1、
        [Theory]
        [InlineData(1,2,3)]
        [InlineData(3,4,7)]
        [InlineData(4,2,6)]
        public void Test2(int x, int y, int except)
        {
            int act = new Class1().Add(x, y);
            Assert.Equal(act, except);
        }


        2、
        [Theory]
        [MemberData(nameof(Class1.ListTest),MemberType = typeof(Class1))]
        public void Test3(int x, int y, int except)
        {
            _outputHelper.WriteLine("Test3测试");//自定义测试输出信息
            int act = new Class1().Add(x, y);
            Assert.Equal(except, act);
        }



        public static List<object[]> ListTest = new List<object[]> //需要是object类型且是静态
        {
            new object[] { 1, 2 ,3},
            new object[] { 2, 3 ,5 },
            new object[] { 3, 6 ,9 }
        }; 


        3、自定义Data Attribute
        [Theory]
        [DataTest]
        public void Test4(int x, int y, int except)
        {
            _outputHelper.WriteLine("Test4测试");//自定义测试输出信息
            int act = new Class1().Add(x, y);
            Assert.Equal(except, act);
        }



    public class DataTestAttribute: DataAttribute
    {
        //继承DataAttribute,并重写GetData
        public override IEnumerable<object[]> GetData(MethodInfo testMethod)
        {
            yield return new object[] { 0, 100, 100 };
            yield return new object[] { 1, 100, 101 };
            yield return new object[] { 200, 100, 300 };
            yield return new object[] { 15, 100, 115 };
        }
    }
相关推荐
皮皮林5514 小时前
IDEA 源码阅读利器,你居然还不会?
java·intellij idea
卡尔特斯8 小时前
Android Kotlin 项目代理配置【详细步骤(可选)】
android·java·kotlin
白鲸开源8 小时前
Ubuntu 22 下 DolphinScheduler 3.x 伪集群部署实录
java·ubuntu·开源
ytadpole8 小时前
Java 25 新特性 更简洁、更高效、更现代
java·后端
纪莫8 小时前
A公司一面:类加载的过程是怎么样的? 双亲委派的优点和缺点? 产生fullGC的情况有哪些? spring的动态代理有哪些?区别是什么? 如何排查CPU使用率过高?
java·java面试⑧股
JavaGuide9 小时前
JDK 25(长期支持版) 发布,新特性解读!
java·后端
用户3721574261359 小时前
Java 轻松批量替换 Word 文档文字内容
java
白鲸开源9 小时前
教你数分钟内创建并运行一个 DolphinScheduler Workflow!
java
Java中文社群10 小时前
有点意思!Java8后最有用新特性排行榜!
java·后端·面试
代码匠心10 小时前
从零开始学Flink:数据源
java·大数据·后端·flink