• 测试框架 MSTest V2与单元测试


    对于测试,其实不用顾虑那么多,随便选择吧,MSTest对VS的集成是最好的,而且也很容易上手,如果哪一天碰到它所无法解决的事情,切换到其他框架也非常简单,仅仅只是Nuget下个包,换下特性而已。

    测试用例组成

    单元测试方法名应具有可读性,让整个测试方法在不需要注释说明的情况下可以被读懂。

    <被测试方法名称>_<期望的结果>_<给予的条件>

    一个完整的单元测试用例应该包含如下三个部分:

    • Arrange:准备当前测试场景的前置条件;
    • Action:执行被测试方法;
    • Assert:对被测试方法的执行结果进行断言判断。

    代码覆盖率

    代码覆盖率指的是运行单元测试时,产品代码的覆盖情况。
    在测试资源管理器中,对选中的单元测试或者全部单元测试的代码进行覆盖率检查。
    双击相应方法可以看到具体的代码覆盖情况:红色(未被覆盖),米色(未覆盖完全),浅蓝色(完全覆盖)。

    对于明确要求测试的公共方法,该方法的代码覆盖率要求100%。
    对于指定排除在覆盖率之外的代码,可使用[System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage()]。

    基于返回值测试

    using Microsoft.VisualStudio.TestTools.UnitTesting;
    [TestClass()]
    public class ClassNameTests
    {
        [DataTestMethod]
        [DataRow(1,2,3)]
        [DataRow(1,20,21)]
        public void AdditonMethodTest(int a , int b, int result)
        {
            Assert.AreEqual(result, a + b);
        }
    }
    

    测试用例

    基于状态测试

    无返回值的情况下,只需要验证更改前后是否符合预期即可。

    [TestClass()]
    public class LeetCodesTests
    {
        [TestMethod()]
        public void HeadTailExchangeTest()
        {
            // arrange
            int[] nums = { 1, 2, 3, 4, 5, 6, 7 };
            int[] nums2 = { 1, 7, 3, 5, 4, 6, 2 };
            var lc = new LeetCodes();
    
            // act
            var rslt = lc.HeadTailExchange(nums);
    
            // assert
            Assert.IsTrue(CommFunc.Comparar<int>.CompararArray(rslt, nums2));
        }
    }
    

    依赖外部对象的测试

    单元测试需要能够快速独立运行,隔离掉对外部的依赖是非常必要的,比如文件系统、硬件数据、web服务等。可以引入“伪对象”。
    流程逻辑:要对单元测试进行约束设计;提取接口,从对具体实现的依赖解耦为对接口的依赖。伪对象实现第三方方法;被测试类添加获取伪对象;派生类注入伪对象;在单元测试时,在派生测试类中测试即可。
    隔离框架,一个能够在运行时新建和配置伪对象的可重用的类库,它让开发者不用为了伪对象而编写重复的代码。隔离框架可以替我们动态的生成需要的伪对象,节省很多精力。常用的模拟库,比如Moq

    多线程测试

    多线程测试

    ILogger测试

    
    

    测试用数据

    AutoFixture 数据对象生成器

  • 相关阅读:
    Xenu Link Sleuth简单使用
    C#简单游戏外挂制作(以Warcraft Ⅲ为例)
    Silverlight InkPresenter 实现路径回放的探索
    Microsoft Virtual Earth Silverlight Map Control (CTP)快速上手
    【Azure实例】有趣的Silverlight应用:录播简笔画
    Azure Services Platform 入门系列文章索引页
    javascript原型的类继承
    javascript给类添加的方法
    checkbox 全选
    【nodejs】 在 Ubuntu 12.04 安裝 Node.js【转】
  • 原文地址:https://www.cnblogs.com/wesson2019-blog/p/13453649.html
Copyright © 2020-2023  润新知