zoukankan      html  css  js  c++  java
  • 单元测试--最佳实践

    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
  • 相关阅读:
    English trip V1
    English trip M1
    every day a practice —— morning(5)
    English Voice of <<All Of Me>>
    bzoj 3561 DZY Loves Math VI
    luogu P4322 [JSOI2016]最佳团体
    luogu P3264 [JLOI2015]管道连接
    bzoj 5084 hashit
    luogu P6091 原根
    bzoj 5206 [Jsoi2017]原力
  • 原文地址:https://www.cnblogs.com/zlgan/p/12180235.html
Copyright © 2011-2022 走看看