ASP.NetCore单元测试

单元测试:,
1、测试业务而不是基础结构

2、遵守微软约定

3、测试驱动的开发TDD (《C#测试驱动开发》)。.NET Core 中的单元测试: 。

.NetCore中的单元测试
1、支持C#,F#,VB.NET;
2、测试框架: xUnit,Nunit,MsTest

3、命令行驱动,或者VS IDE驱动

为什么要单元测试:

1、追求速度性能·
2、独立,可以单独运行,不依赖于数据库。 Mock

3.可重复

4.可自动化

单元测试中的术语:

Dummy,Fake,Stub,Spy和Mock

测试哑元(Dummy) - 只是帮助测试项目编译通过,不在具体测试里面起任何作用。

测试桩(Stub) - 只是能返回帮助测试的值

测试间谍(Spy) - 目的是测试被测单元接收到的值,也能返回值。Test Spy里肯定是要增加取参数的函数,用于测试

仿冒对象(Fake): 用能更简单的实现,部分实行测试替代。

仿制对象(Mock object) - 主要目的是测试函数调用,调用顺序。同时具备Stub, Spy功能。Mock不是仿真器,但是一个Mock Case的确可以仿真在某一个特定场景下被测模块与其他模块的交互。

 

怎么写一个单元测试?
1、准备数据,准备参数

2、调用行为(函数,方法)。

3、断言,断定调用行为之后返回的结果是否为

下面开始创建:

第一步创建类库,添加一个类PrimeService,

 

 

一.使用xUnit测试项目:

 

 

 单元测试下面命名为ClassLibrary.XUNitTests,添加类PrimeServiceTest,示例代码如下:

using System;
using System.Collections.Generic;
using System.Text ;
namespace ClassLibrary. XUnitTests
{
  public class PrimeServiceTest
    {
    private readonly PrimeService _primeService;
    public PrimeServiceTest()
    {
      _primeService = new PrimeService();
    }
    //此处写测试方法
    
    [Fact]
    public void IsPrime_CanThrowNotImplementedException_WhenValueNot1(){
    //数据
    int thisValue = 2;
    //断言 抛出异常
    Assert.Throws<NotImplementedException>(()=>_primeSerxise.IsPrime(thisvalue));
    }
    }

}

 

 

 

 

 

 

 

 

二.MsTest

 

 

 

MsTest创建之后会有示例模板

 

 

 

 

 

 

方拾二.MsTest测试多个值

using System;
using System.Collections.Generic;
using System.Text ;
namespace ClassLibrary. MSTest
{
  [TestClass]
   public class PrimeServiceTest
    {
    private readonly PrimeService _primeService;
    public PrimeServiceTest()
    {
      _primeService = new PrimeService();
    }
    //单个数据测试
    [TestMethod]
    public void IsPrime_ReturnFalse_WhenValueOf1(int value)
    {  
      //数据 
       int thisValue = value;

      //行为
      var result = _primeService.IsPrime(thisValue) ;
      //断言
      Assert.IsFalse(result);
    }
    //随机模拟大批数据测试,跟Xunit一样,如果发生测试不通过,后面代码不再继续
    [DataTestMethod]
    [DataRow(-1)]
    [DataRow(0)]
    [DataRow(1)]
    public void  IsPrime_ReturnFalse_WhenValueOf1(int value)
    {
      //数据
      int thisValue = value;
      //行为
      var result = _primeService.IsPrime(thisValue) ;//断言
      Assert.IsFalse(result) ;
    }
  }
}

 

 

  

 

 三.VS里面的自带工具:Live Unit Testing

运行不通过会出现以下提示:

 

 

 

四.第三方测试工具

 

posted @ 2021-11-17 17:19  Tammytan  阅读(653)  评论(0编辑  收藏  举报