当前位置: 首页 > 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}");}
}

相关文章:

  • 数据结构实验8.1:图的基本操作
  • 第16章 监控和排除日志记录错误
  • 1. 设计哲学与核心价值
  • OpenCV第6课 图像处理之几何变换(仿射)
  • 【漫话机器学习系列】241.典型丢弃概率(Typical Dropout Probabilities)
  • 基于PPO的自动驾驶小车绕圈任务
  • qt csv文件写操作
  • Java面试深度解密:Spring Boot、Redis、日志优化、JUnit5及Kafka事务核心技术解析
  • APP 设计中的色彩心理学:如何用色彩提升用户体验
  • 【MATLAB例程】基于RSSI原理的Wi-Fi定位程序,N个锚点(数量可自适应)、三维空间,轨迹使用UKF进行滤波,附代码下载链接
  • vscode docker 调试
  • 本地MySQL连接hive
  • 「OC」源码学习——对象的底层探索
  • 计算机视觉与深度学习 | 点云配准算法综述(1992-2025)
  • Amazon Bedrock Converse API:开启对话式AI新体验
  • Linux系统调优技巧与优化指南
  • Linux普通用户和超级管理员
  • LFU算法解析
  • 优化03-10046和10053
  • 免费在线练字宝藏Z2H 免安装高效生成 vs 笔顺功能补缺
  • 川大全职引进考古学家宫本一夫,他曾任日本九州大学副校长
  • 同为“东部重要中心城市”后交出首份季报:宁杭苏表现如何?
  • 中国驻俄大使张汉晖人民日报撰文:共襄和平伟业,续谱友谊新篇
  • 郭旭涛转任河北省科协党组书记、常务副主席,曾任团省委书记
  • 全国铁路迎来返程客流高峰,预计今日发送2040万人次
  • 三百余英国王室藏品,一览爱德华时代的优雅