• 单元测试--最佳实践


    1、测试方法的命名

    • 被测试方法_测试方案_调用方案的预期行为
    public  class StringCalculator
    {
        public object Add(string v)
        {
            return int.Parse(y);
        }
    }

    测试代码

    [Fact]
    public void Add_SingleNumber_ReturnsSameNumber()
    {
        var stringCalculator = new StringCalculator();
        var actual = stringCalculator.Add("0");
        Assert.Equal(0, actual);
    }

    2、单元测试模式

    • Arrange 安排测试对象,准备测试数据
    • Act执行测试行为
    • Assert断言逾期行为
    [Fact]
    public void Add_EmptyString_ReturnsZero()
    {    // Arrange   
        var stringCalculator = new StringCalculator();
         // Act    
        var actual = stringCalculator.Add("");
         // Assert    
        Assert.Equal(0, actual); 
    }

    3、测试方法论

    • 编写测试时需要将重点放在行为上
    • 对于魔幻字符串,一种很好的方法是将这些值赋给常量
    [Fact]
    void Add_MaximumSumResult_ThrowsOverflowException()
    {
        var stringCalculator = new StringCalculator(); 
        const string MAXIMUM_RESULT = "1001";
        Action actual = () => stringCalculator.Add(MAXIMUM_RESULT);
        Assert.Throws<OverflowException>(actual);
    }
    • 避免手动字符串串联和逻辑条件,例如 if 、 while 、 for 和 switch 等等
    // Bad Test
    [Fact]
    public void Add_MultipleNumbers_ReturnsCorrectResults()
    {
        var stringCalculator = new StringCalculator();
        var expected = 0;
        var testCases = new[] { "0,0,0", "0,1,2", "1,2,3" };
        foreach (var test in testCases)
        { 
            Assert.Equal(expected, stringCalculator.Add(test)); 
            expected += 3; 
        }
    }
    
    //Good Test
    [Theory]
    [InlineData("0,0,0", 0)]
    [InlineData("0,1,2", 3)]
    [InlineData("1,2,3", 6)]
    public void Add_MultipleNumbers_ReturnsSumOfNumbers(string input, int expected)
    {
        var stringCalculator = new StringCalculator();
        var actual = stringCalculator.Add(input);
        Assert.Equal(expected, actual);
    }
    • 避免多个断言(方法同上)
    • 不需要对私有方法单独测试
    SQL Server
  • 相关阅读:
    node 第一天
    VUE全局api
    VUE01指令
    位置属性
    dom总结
    animate.css与wow.js制作网站动效
    继承要点
    css3
    linux创建程序启动
    https://www.meitulu.com/ java下载图片
  • 原文地址:https://www.cnblogs.com/zlgan/p/12180235.html
Copyright © 2020-2023  润新知