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

Polyglot Notebooks 中使用 xUnit 单元测试


### 本文目录

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

csharp 复制代码
// 默认包源
#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、定义测试类和测试方法

csharp 复制代码
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或通过命令行那样直接。你需要手动实例化测试类并调用测试方法,或者使用反射来自动发现和执行测试方法。以下是一个简化的例子,展示如何手动执行测试方法并输出结果。

  • 手动调用测试
csharp 复制代码
// 手动执行测试方法
var calculatorTests = new CalculatorTests();

// 执行Add_ReturnsCorrectSum测试
calculatorTests.Add_ReturnsCorrectSum();

// 执行Subtract_ReturnsCorrectDifference测试
calculatorTests.Subtract_ReturnsCorrectDifference();

Console.WriteLine("Tests executed successfully.");
  • 使用反射的例子
csharp 复制代码
#r "nuget: xunit"
#r "nuget: xunit.assert"

using Xunit;
using System.Reflection;
csharp 复制代码
//被测试类
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}");
    }
}
相关推荐
字节暗面2 小时前
客户端上报不可信:游戏服务端数据校验与对局重演设计
c#·游戏开发·服务端校验·反作弊
chingho3 小时前
GitHub上这10个C#项目,不仅实用,还怪好玩的
c#·github·.net·开源项目
半亩码田5 小时前
C#转Python第5.1篇:异步编程:asyncio vs async/await,语法相似但机制不同
开发语言·python·c#
阿华田5125 小时前
Java 类加载冲突实战:解决 is not an instance of
c#·linq
samble15 小时前
从零搭建灌装监控系统(十七):LiveCharts 实时温度曲线
c#·wpf·mvvm·modbus·工业控制
淡海水1 天前
02-07-原理篇-GC暂停时间的本质
开发语言·unity·c#·gc·暂停时间
小羊没烦恼!1 天前
OS X 上使用.NET开发应用程序
开发语言·前端·数据库·人工智能·c#·策略模式
Behavior1 天前
Unity 7.0 Alpha 拆解:编辑器干掉 Mono 换 CoreCLR
c#·unity3d·游戏开发
淡海水1 天前
02-06-原理篇-增量式GC与并发GC
算法·unity·c#·并发·gc·增量
Vertira1 天前
C# 函数封装成 DLL,
开发语言·c#