关于 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`或类似的测试工厂类)来创建一个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#测试 ,请多多关照 记得点赞哦 谢谢 对你也有用的话记得收藏

相关推荐
今天秃头了吗??几秒前
【JAVA】网络编程
java·网络·网络编程·socket
煎饼皮皮侠4 分钟前
【图解】idea中快速查找maven冲突
java·maven·intellij-idea·冲突
科兴第一吴彦祖5 分钟前
在线会议系统是一个基于Vue3 + Spring Boot的现代化在线会议管理平台,集成了视频会议、实时聊天、AI智能助手等多项先进技术。
java·vue.js·人工智能·spring boot·推荐算法
工一木子5 分钟前
HashMap源码深度解析:从“图书馆“到“智能仓库“的进化史
java·源码·hashmap
平生不喜凡桃李23 分钟前
C++ 异常
android·java·c++
SamDeepThinking28 分钟前
用设计模式重构核心业务代码的一次实战
java·后端·设计模式
endcy201633 分钟前
mybatis-plus多租户兼容多字段租户标识
java·mybatis-plus·多租户
夜猫逐梦1 小时前
【Lua】Windows 下编写 C 扩展模块:VS 编译与 Lua 调用全流程
c语言·windows·lua
老黄编程1 小时前
VSCode AI编程插件
ide·vscode·ai编程
李游Leo1 小时前
Redis 持久化与高可用实践(RDB / AOF / Sentinel / Cluster 全解析)
java·spring·bootstrap