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

C# NUnit

Install-Package NUnit;
Install-Package NUnit3TestAdapter;
Install-Package Microsoft.Net.Test.Sdk;
Install-Package Moq;
using Moq;
using NUnit.Framework;
using NUnit.Framework.Legacy;namespace ConsoleApp21
{ [TestFixture]public class CalculatorTests{private Calculator calculator;[SetUp]public void SetUp(){calculator = new Calculator();}[Test]public void Add_TwoNumbers_ReturnsSum(){int a = 5, b = 3;int result=calculator.Add(a, b);Assert.That(result, Is.EqualTo(8));}[Test]public void Subtract_TwoNumbers_ReturnsDifference(){int result = calculator.Subtract(10, 5);Assert.That(result, Is.EqualTo(5));}[Test]public void Divide_ByZero_ThrowDividedByZeroException(){Assert.Throws<DivideByZeroException>(() =>{calculator.Divide(10, 0);});}[TearDown]public void TearDown(){calculator = null;}}public class Calculator{public int Add(int a, int b) => a + b;public int Subtract(int a,int b)=> a - b;public int Divide(int a, int b) => a / b;public int Multiply(int a, int b) => a * b;}[TestFixture]public class AdvancedTests{[Test]public void StringAssert_Example(){string actual = "hello world";StringAssert.Contains("hello", actual);StringAssert.StartsWith("hello", actual);StringAssert.EndsWith("world", actual);}[Test]public void CollectionAssert_Example(){var expected = new List<int> { 1, 2, 3 };var actual = new List<int> { 1, 2, 3 };CollectionAssert.AreEqual(expected, actual);CollectionAssert.AllItemsAreUnique(actual);CollectionAssert.IsSubsetOf(new List<int> { 1, 2 }, actual);}[Test]public void MultipleAssert_Example(){var person = new Person { Name = "Fred", Age = 16 };Assert.Multiple(() =>{Assert.That(person.Name, Is.EqualTo("Fred"));Assert.That(person.Age,Is.GreaterThan(14));Assert.That(person.Age,Is.LessThan(17));});}}public class Person{public string Name { get; set; }public int Age { get; set;  }}[TestFixture]public class ParameterizedTests{[TestCase(1,1,2)][TestCase(2,3,5)][TestCase(-1,-1,-2)][TestCase(0,0,0)]public void Add_VariousNumbers_ReturnsCorrectNum(int a,int b,int expected){var calculator=new Calculator();int result=calculator.Add(a,b); Assert.That(result, Is.EqualTo(expected));}[TestCaseSource(nameof(TestData))]public void Multiply_VariousNumbers_ReturnsCorrectProduct(int a,int b,int expected){var calculator = new Calculator();int result = calculator.Multiply(a, b);Assert.That(result, Is.EqualTo(expected));}private static object[] TestData ={new object[]{2,3,6},new object[]{5,0,0},new object[]{-2,4,-8}};}[TestFixture]public class AsyncTests{[Test]public async Task GetDataAsync_ReturnsExpectedData(){var service = new DataService();var result = await service.GetDataAsync();Assert.That(result, Is.EqualTo("hello world"));}[Test]public async Task CalculateAsync_WithValidInput_ReturnsCorrectValue(){var service = new DataService();int result = await service.CalculateSumAsync(5, 3);Assert.That(result, Is.EqualTo(8));}}public class DataService{public async Task<string> GetDataAsync(){await Task.Delay(100);return "hello world";}public async Task<int> CalculateSumAsync(int a,int b){await Task.Delay(50);return a + b;}}[TestFixture]public class MockingTests{[Test]public void UserService_GetUser_ReturnsUserFromRepository(){var mockRepo = new Mock<IUserRepository>();var expectedUser = new User { Id = 1, Name = "Fred" };mockRepo.Setup(repo => repo.GetUser(1)).Returns(expectedUser);var userService = new UserService(mockRepo.Object);var result = userService.GetUser(1);Assert.That(result, Is.EqualTo(expectedUser));mockRepo.Verify(repo => repo.GetUser(1), Times.Once);}[Test]public void EmailService_SendEmail_CallsRepository(){var mockRepo = new Mock<IEmailRepository>();var emailService = new EmailService(mockRepo.Object);var email = "test@example.com";var message = "hello";emailService.SendEmail(email, message);mockRepo.Verify(repo => repo.SaveMail(It.Is<string>(x => x == email),It.Is<string>(m => m.Contains("hello"))),Times.Once);}}public interface IUserRepository{User GetUser(int id);}public interface IEmailRepository{void SaveMail(string email, string message);}public class UserService{private readonly IUserRepository repository;public UserService(IUserRepository repositoryValue){repository = repositoryValue;}public User GetUser(int id){return  repository.GetUser(id);}}public class EmailService{private readonly IEmailRepository repository;public EmailService(IEmailRepository repositoryValue){repository = repositoryValue;}public void SendEmail(string email,string message){repository.SaveMail(email, message);}}public class User{public int Id { get; set; }public string Name { get; set; }}
}

 

 

1.Rebuild;

2.Test/Run All Tests;

 

image

 

image

 

http://www.jsqmd.com/news/12149/

相关文章:

  • 从 EFI 到 GPT:深入理解现代计算机启动与磁盘分区技能
  • 2025年扁钢厂家最新权威推荐榜:强度与精度双重保障的工业脊
  • GJB 438C学习
  • 想在浏览器里跑 AI?TensorFlow.js 硬件帮助完全指南
  • Linux系统设置与理解主机名(hostname)的重要性
  • CSharp: image (JPG,PNG,etc) covert webp using Aspose.Imaging
  • 安装pytorch(win 11 +3060 laptop)
  • MySQL数据库连接过多(Too many connections)错误处理策略
  • Real English Questions and Answers Practice
  • [Python] Python配置uv环境
  • SQL删除操作性能分析:移除300万条记录所需时间估算
  • Spring Boot 基础教程 - 指南
  • Linux系统监控报告CPU软锁定问题(soft lockup)诊断方法
  • pytorch报告
  • Java语言操作INI配置文件策略
  • 【操作系统】Page Fault
  • IntelliJ IDEA / Android Studio 里直接跑 Cursor(不用来回切窗口) - 教程
  • 2025管件厂家最新权威推荐榜:技术实力与市场口碑深度解析
  • Java 软件报错之初
  • 2025防震气柱袋厂家权威推荐榜:抗震防护与品质口碑深度解析
  • 2025智能照明模块厂家权威推荐榜:技术创新与智能控制口碑之
  • 化工反应釜全流程监控中Modbus TCP 转DeviceNet协议下西门子 S7-1200 与温度传感器的智能化精准调控方案
  • 实用指南:【Linux】深入理解Linux的进程(一)
  • 2025年10月铝型材源头厂家最新推荐排行榜:五大优选企业深度解析!
  • 2025外贸独立站推广最新权威推荐榜:高效引流与转化实战全解
  • 软件工程第三次作业——结对作业
  • 20232310 2025-2026-1 《网络与系统攻防技术》 实验一实验报告
  • 2025年CNC高压清洗机订做厂家权威推荐榜:技术实力与定制
  • K8s学习笔记(八) K8s资源对象 - 教程
  • 小分子抗体药物:突破传统抗体瓶颈,在精准治疗中开辟新赛道