关于 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#测试 ,请多多关照 记得点赞哦 谢谢 对你也有用的话记得收藏

相关推荐
渣哥1 小时前
原来 Java 里线程安全集合有这么多种
java
间彧1 小时前
Spring Boot集成Spring Security完整指南
java
间彧1 小时前
Spring Secutiy基本原理及工作流程
java
Java水解2 小时前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆4 小时前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试
前端小张同学5 小时前
服务器上如何搭建jenkins 服务CI/CD😎😎
java·后端
ytadpole5 小时前
Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
java·后端
华仔啊5 小时前
基于 RuoYi-Vue 轻松实现单用户登录功能,亲测有效
java·vue.js·后端
程序员鱼皮6 小时前
刚刚 Java 25 炸裂发布!让 Java 再次伟大
java·javascript·计算机·程序员·编程·开发·代码