当前位置: 首页 > article >正文

关于 C# (C Sharp)测试

一, 在C#中进行测试通常涉及使用测试框架,如NUnit、xUnit或MSTest。

通过创建和运行单元测试,检查代码是否按预期工作。 因为可将程序的功能分为可作为单个单元测试的独立可测试行为,所以它叫做单元测试。

代码:

public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }
}

引入NUnit框架

using NUnit.Framework;

[TestFixture]   // 定义测试类
public class CalculatorTests
{
    private Calculator calculator;   //声明被测对象

    [SetUp]  // 设置测试环境
    public void SetUp()
    {
        calculator = new Calculator();
    }


    [Test]    编写测试方法特性标记了一个测试方法
    public void ReturnsSum()
    {
        int result = calculator.Add(2, 3);

        Assert.AreEqual(5, result);  

// Assert:这是 NUnit 测试框架中的一个类,提供了一系列用于验证测试结果的方法。

// AreEqual:这是 Assert 类中的一个方法,用于比较两个值是否相等。

    }
}

Assert.lsTrue 判断是否为真
Assert.lsFalse 判断是否为假
Assert.AreEqual 判断是否相等

[TestClass][TestFixture]定义一个测试类,里面可以包含很多测试函数和初始化、销毁函数。
[TestMethod][Test]定义一个独立的测试函数。
[ClassInitialize][TestFixtureSetUp]定义一个测试类初始化函数,每当运行测试类中的一个或多个测试函数时,这个函数将会在测试函数被调用前被调用一次(在第一个测试函数运行前会被调用)。
[ClassCleanup][TestFixtureTearDown]定义一个测试类销毁函数,每当测试类中的选中的测试函数全部运行结束后运行(在最后一个测试函数运行结束后运行)。
[TestInitialize][SetUp]定义测试函数初始化函数,每个测试函数运行前都会被调用一次。
[TestCleanup][TearDown]定义测试函数销毁函数,每个测试函数执行完后都会被调用一次。
[AssemblyInitialize]--定义测试Assembly初始化函数,每当这个Assembly中的有测试函数被运行前,会被调用一次(在Assembly中第一个测试函数运行前会被调用)。
[AssemblyCleanup]--定义测试Assembly销毁函数,当Assembly中所有测试函数运行结束后,运行一次。(在Assembly中所有测试函数运行结束后被调用)
[DescriptionAttribute][Category]定义标识分组。

二, 在xUnit测试框架中

[Theory] 属性用于标记一个测试方法,该方法将使用多个数据集运行多次。

[Fact] 标记的测试方法只运行一次。

而 [Theory] 允许您为测试方法提供多个输入值,从而可以验证该方法在不同输入下的行为。

var client = factory.CreateClient();

使用factory(通常是一个WebAppFactory<TPoint>或类似的测试工厂类)来创建一个HTTP客户端实例。这个客户端将用于发送HTTP请求到被测试的API。

var response = await client.GetAsync("api/deep-projects/0091");

使用HTTP客户端发送一个GET请求到"api/deep/001"

Assert.Equal(HttpStatusCode.OK, response.StatusCode);

验证响应的状态码是否为200 OK。这表示请求成功,并且API返回了所请求的资源。

在单元测试中,"Arrange-Act-Assert"(AAA)模式是一种常用的结构,它帮助开发者清晰地组织测试代码,使其易于理解和维护

  1. Arrange(准备)
    • 在这个阶段,测试者设置测试所需的所有前置条件。
    • 这包括创建测试所需的任何对象或数据,以及配置任何必要的依赖项或模拟对象(mocks)。
    • 目标是确保测试环境在执行测试逻辑之前是干净且配置正确的。
  2. Act(执行)
    • 在这个阶段,测试者调用被测试的方法或函数。
    • 这是测试的核心部分,其中包含了实际要验证的行为。
    • 目标是执行被测代码,并捕获任何返回结果或异常。
  3. Assert(断言)
    • 在这个阶段,测试者验证执行结果是否符合预期。
    • 这通常涉及到比较实际结果与预期结果,以及检查是否抛出了预期的异常。
    • 目标是确保被测代码的行为与预期一致。

[CollectionDefinition] 属性用于定义一个测试集合(collection),这个集合可以包含多个测试类。测试集合允许你将相关的测试组织在一起,并共享相同的设置或资源。这对于需要复杂设置或清理操作的测试特别有用,因为你可以在集合级别上执行这些操作,而不是在每个测试类或测试方法上重复执行。

内容杂乱无序,新手小白的总结 ,希望对你也有所帮助 第一次C#测试 ,请多多关照

记得点赞哦 谢谢 对你也有用的话记得收藏


http://www.kler.cn/a/380183.html

相关文章:

  • linux系统安装git及git常用命令
  • dc源码铺子应用部署教程
  • 防重方案-订单防重方案笔记
  • [5] 一篇文章教会你如何实现端口敲门
  • 基于物联网的户外环境检测装置教学文章
  • [论文阅读]A Survey of Embodied Learning for Object-Centric Robotic Manipulation
  • Spring Boot技术在校园社团管理中的高效应用
  • Javascript的进阶部分(DOM)操作 !!
  • ssm023实验室耗材管理系统设计与实现+jsp(论文+源码)_kaic
  • 开源与商业的碰撞TPFLOW与Gadmin低代码的商业合作
  • 机器视觉:ROI在机器视觉中的作用
  • Spring学习笔记_24——切入点表达式
  • Pwn学习笔记(10)--UAF
  • ElementUI中el-table双击单元格显示输入框
  • 基于SSM+小程序的高校寻物平台管理系统(失物1)
  • k8s简单的指令以及图解
  • 论文阅读:Computational Long Exposure Mobile Photography (二)
  • Spring3(代理模式 Spring1案例补充 Aop 面试题)
  • 使用commitizen用于项目git提交规范管理
  • HarmonyOS第一课 07 从网络获取数据-习题
  • 【python GUI编码入门-14】创建动态更新的Tkinter GUI应用
  • 【算法】【优选算法】双指针(下)
  • 了解bootstrap改造asp.net core MVC的样式模板
  • 【湖南-常德】《市级信息化建设项目初步设计方案编制规范和支出预算编制标准(试行)》-省市费用标准解读系列05
  • ElMessageBox 内容自定义
  • 嵌入式常用功能之通讯协议1--IIC