zoukankan      html  css  js  c++  java
  • ASP.NET Core 单元测试

    前言

    单元测试是好, 但是也很花时间. 有些功能封装好了以后也不怎么会再打开, 所以通常就是徒手测试一下, 过了就过了. 

    但是往往就是那么神奇, 就是会有需求漏掉. 后来要加, 又由于不想潜水, 对自己有信心就会直接改, 然后只测试自己认为影响的部分. 最后就是有 bug. 

    所以要解决这种问题, 还是写测试比较好,毕竟一个 live 的项目出 bug 有时候会死的很难看.

    3 选 1

    NUnit vs XUnit vs MSTest

    其实也没什么好选的, NUnit 是 XUnit 的前生, XUnit 是面向 .NET Core 的.

    MSTest 是微软自带的, 但是很少人用.

    微软官网三个教程都有. 所以自然是选 XUnit 咯.

    文档参考

    Unit Testing | .NET Core 101 [7 of 8] (YouTube 教程)

    单元测试入门

    dotnet test (.NET CLI)

    dotnet test --filter (.NET CLI)

    .NET Core Test Explorer (VS Code Plugin)

    Testing .NET Core Apps with Visual Studio Code

    大致长相

    测试通常是开多一个 Project 做. Naming convention 和 Folder structure 我还没有一个规范, 之后再补上.

    IDE 都支持的挺好的. 记得要开启 CodeLens 哦.

    VS Code

    Visual Studio

    .NET CLI

    定义 Trait 来做 filter

    [Fact]
    [Trait("Category", "Now")]

    cmd

    dotnet test --filter Category=Now
    dotnet test --filter Category!=Now

    moq

    安装: dotnet add package Moq

    Service 通常会有许多依赖, 我们在做单侧得时候不能直接使用这些依赖, 不然依赖有问题就会被误以为是这个 Service 的问题了.

    所有依赖的 Service 都需要使用 mock 形式.

    比如: Options

    var options = new RImageOptions
    {
        Ratios = new List<Ratio> {
            new Ratio { Wide = 16, High = 9 },
            new Ratio { Wide = 3, High = 2 },
            new Ratio { Wide = 4, High = 3 },
            new Ratio { Wide = 1, High = 1 },
            new Ratio { Wide = 3, High = 4 },
            new Ratio { Wide = 2, High = 3 },
        }
    };
    var snapshot = new Mock<IOptionsSnapshot<RImageOptions>>();
    snapshot.Setup(s => s.Value).Returns(options);
  • 相关阅读:
    Language Integrated Query
    为什么说 LINQ 要胜过 SQL
    LINQ(Language Integrated Query)
    Rx (Reactive Extensions)介绍
    ReactiveX Operators
    ReactiveX
    给 iOS 开发者的 RxSwift(一)
    The features of Swift
    RxSwift源码与模式分析一:基本类
    智力
  • 原文地址:https://www.cnblogs.com/keatkeat/p/15136464.html
Copyright © 2011-2022 走看看