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

多语言笔记系列:Polyglot Notebooks 中使用 xUnit 单元测试

Polyglot Notebooks 中使用 xUnit 单元测试


本文目录

  • Polyglot Notebooks 中使用 xUnit 单元测试
    • @[TOC](本文目录)
    • Polgylot Notebooks 并没有直接支持单元测试框架。不能像VS里那样方便的进行单元测试。简单远行的话,可以使用下面的方案!
    • 1、引入必要的NuGet包到.NET Interactive环境中
    • 2、定义测试类和测试方法
    • 3、执行测试并获取结果。在.NET Interactive中,直接运行xUnit测试并不像在Visual Studio或通过命令行那样直接。你需要手动实例化测试类并调用测试方法,或者使用反射来自动发现和执行测试方法。以下是一个简化的例子,展示如何手动执行测试方法并输出结果。

Polgylot Notebooks 并没有直接支持单元测试框架。不能像VS里那样方便的进行单元测试。简单远行的话,可以使用下面的方案!

1、引入必要的NuGet包到.NET Interactive环境中

// 默认包源
#i "nuget:https://api.nuget.org/v3/index.json"//Nuget 包引用
#r "nuget:xunit"
#r "nuget: xunit.assert"
#r "nuget:xunit.runner.visualstudio"
#r "nuget:xunit.runner.console"

2、定义测试类和测试方法

using Xunit;public class CalculatorTests
{[Fact]public void Add_ReturnsCorrectSum(){var calculator = new Calculator();var result = calculator.Add(2, 2);Assert.Equal(4, result);}[Fact]public void Subtract_ReturnsCorrectDifference(){var calculator = new Calculator();var result = calculator.Subtract(5, 3);Assert.Equal(2, result);}
}public class Calculator
{public int Add(int x, int y) => x + y;public int Subtract(int x, int y) => x - y;
}

3、执行测试并获取结果。在.NET Interactive中,直接运行xUnit测试并不像在Visual Studio或通过命令行那样直接。你需要手动实例化测试类并调用测试方法,或者使用反射来自动发现和执行测试方法。以下是一个简化的例子,展示如何手动执行测试方法并输出结果。

  • 手动调用测试
// 手动执行测试方法
var calculatorTests = new CalculatorTests();// 执行Add_ReturnsCorrectSum测试
calculatorTests.Add_ReturnsCorrectSum();// 执行Subtract_ReturnsCorrectDifference测试
calculatorTests.Subtract_ReturnsCorrectDifference();Console.WriteLine("Tests executed successfully.");
  • 使用反射的例子
#r "nuget: xunit"
#r "nuget: xunit.assert"using Xunit;
using System.Reflection;
//被测试类
public class Calculator
{public int Add(int a, int b) => a + b;
}//测试类
public class CalculatorTests
{[Fact]public void Add_TwoNumbers_ReturnsSum(){var calculator = new Calculator();int result = calculator.Add(1, 2);Assert.Equal(3, result); //:ml-citation{ref="3,4" data="citationList"}}
}//使用反射,调用被测试类
var testInstance = new CalculatorTests();
var testMethods = testInstance.GetType().GetMethods().Where(m => m.GetCustomAttributes(typeof(FactAttribute), false).Length > 0);foreach (var method in testMethods)
{try{method.Invoke(testInstance, null);Console.WriteLine($"✅ {method.Name} 通过");}catch (Exception ex){Console.WriteLine($"❌ {method.Name} 失败: {ex.InnerException?.Message}");}
}
http://www.xdnf.cn/news/286903.html

相关文章:

  • WebAssembly(Wasm):现代Web开发的超级加速器
  • Spring Boot 之MCP Server开发全介绍
  • Linux | WEB服务器的部署及优化
  • 山东大学项目实训-创新实训-法律文书专家系统-项目报告(三)
  • 推特逆向算法,推特爬虫,数据分析,推特关键词搜索
  • C# 检查某个点是否存在于圆扇区内(Check whether a point exists in circle sector or not)
  • AI小智本地前后端部署
  • Web Workers 技术详解与最佳实践
  • Kubernetes(k8s)学习笔记(七)--KubeSphere 最小化安装
  • webpack 的工作流程
  • 备忘录模式(Memento Pattern)
  • 56.[前端开发-前端工程化]Day03-webpack构建工具
  • Windows11 VS code 安装 Cline 调用 Github MCP 配置过程坑点汇总
  • 深入探索 51 单片机:从入门到实践的全面指南
  • ctfshow——web入门361~368
  • 电脑怎么分屏操作?
  • Gradio全解20——Streaming:流式传输的多媒体应用(5)——基于WebRTC的摄像头实时目标检测
  • N-Gram 模型
  • 慢sql处理流程和常见案例
  • Webug4.0靶场通关笔记16- 第20关文件上传(截断上传)
  • 数据结构——算法复杂度
  • 部署GM DC Monitor 一体化监控预警平台
  • Python 整理3种查看神经网络结构的方法
  • 3DGS-slam:splatam公式
  • 开源模型应用落地-qwen模型小试-Qwen3-8B-推理加速-vLLM(一)
  • Git 标签管理
  • 【STM32 学习笔记】GPIO输入与输出
  • Scrapy分布式爬虫实战:高效抓取的进阶之旅
  • 【NLP】30. 深入理解 In-Context Learning 的核心机制与策略
  • PrivKV: Key-Value Data Collection with Local Differential Privacy论文阅读