Student类id name age 增删改查 以及单元测试

C#中的对象管理与单元测试:以学生信息管理为例(第一部分)

引言

在软件开发中,对对象的管理和测试是核心技能之一。本文以一个简单的例子——学生信息管理系统,展示了如何在C#中进行对象管理和单元测试。我们将通过创建一个Student类和一个管理此类对象的StudentManager类,来展示基本的增加、删除、更新和查询操作。同时,我们将使用单元测试来确保这些操作的正确性。

定义 Student 类

我们的第一步是定义一个基本的Student类。这个类将包含学生的ID、姓名和年龄。在面向对象编程中,一个类是一个蓝图,它定义了对象的状态(属性)和行为(方法)。

public class Student
{
// 学生的ID
public int Id { get; set; }

// 学生的名字
public string Name { get; set; }

// 学生的年龄
public int Age { get; set; }

// 构造函数,用于创建新的学生对象
public Student(int id, string name, int age)
{
Id = id;
Name = name;
Age = age;
}
}

类的组成

  • 属性(Properties)Id, Name, Age。这些是类的成员变量,用于存储对象的状态。
  • 构造函数(Constructor):用于初始化新创建的对象。在这里,我们使用id, nameage来初始化一个Student对象。

封装

在面向对象编程中,封装是一个核心概念。我们通过使类的成员变量为私有(private)并通过公共(public)方法来访问它们,实现了封装。在这个例子中,我们使用了C#的自动属性(auto-implemented properties),它是一种简化的属性声明方式。

C#中的对象管理与单元测试:以学生信息管理为例(第二部分)

实现 StudentManager 类

在第一部分中,我们定义了Student类。现在,我们将实现一个StudentManager类来管理学生对象的集合。这个类将提供添加、删除、更新和查询学生的方法。

StudentManager 类的设计

我们设计StudentManager类来持有Student对象的集合,并提供管理这些对象所需的方法。这里使用了C#中的泛型集合List<Student>

using System.Collections.Generic;
using System.Linq;

public class StudentManager
{
private List<Student> students = new List<Student>();

// 添加学生到列表
public void AddStudent(Student student)
{
students.Add(student);
}

// 根据ID删除学生
public void RemoveStudent(int id)
{
var student = students.FirstOrDefault(s => s.Id == id);
if (student != null)
{
students.Remove(student);
}
}

// 更新学生信息
public void UpdateStudent(int id, string name, int age)
{
var student = students.FirstOrDefault(s => s.Id == id);
if (student != null)
{
student.Name = name;
student.Age = age;
}
}

// 根据ID获取学生信息
public Student GetStudent(int id)
{
return students.FirstOrDefault(s => s.Id == id);
}
}

类方法详解

  • AddStudent:添加一个新的Student对象到集合中。
  • RemoveStudent:根据ID移除集合中的Student对象。
  • UpdateStudent:根据ID更新集合中的Student对象。
  • GetStudent:根据ID从集合中检索Student对象。

这个类展示了基本的集合操作,是学习C#中集合管理的好例子。此外,通过这些方法的实现,我们也可以看到LINQ(Language Integrated Query)的使用,它是C#中处理数据的强大工具。

面向对象设计原则

StudentManager类的设计中,我们遵循了一些面向对象设计原则,如单一职责原则(SRP)。这个原则指出,一个类应该只有一个改变的理由。在我们的例子中,StudentManager类仅负责管理Student对象的集合。

C#中的对象管理与单元测试:以学生信息管理为例(第三部分)

单元测试的重要性

在前两部分中,我们讨论了如何创建StudentStudentManager类。这一部分将重点介绍单元测试的重要性以及如何在Visual Studio中对这些类进行测试。单元测试是确保代码质量的关键步骤,它帮助开发者验证代码的每个部分都按预期工作。

使用 NUnit 进行单元测试

我们将使用 NUnit 测试框架来编写和运行针对StudentManager类的单元测试。首先,您需要在测试项目中通过NuGet安装NUnit和NUnit3TestAdapter。

编写测试用例

下面是一个测试类的示例,它包含了针对StudentManager类的几个基本测试用例。

using NUnit.Framework;

[TestFixture]
public class StudentManagerTests
{
private StudentManager manager;

// 在每个测试开始前运行,用于设置测试环境
[SetUp]
public void Setup()
{
manager = new StudentManager();
}

// 测试添加和检索学生的功能
[Test]
public void TestAddAndRetrieveStudent()
{
var student = new Student(1, "John Doe", 20);
manager.AddStudent(student);

var retrieved = manager.GetStudent(1);
Assert.AreEqual(student, retrieved);
}

// 测试删除学生的功能
[Test]
public void TestRemoveStudent()
{
var student = new Student(1, "John Doe", 20);
manager.AddStudent(student);
manager.RemoveStudent(1);

var retrieved = manager.GetStudent(1);
Assert.IsNull(retrieved);
}

// 测试更新学生信息的功能
[Test]
public void TestUpdateStudent()
{
var student = new Student(1, "John Doe", 20);
manager.AddStudent(student);

manager.UpdateStudent(1, "Jane Doe", 21);
var updated = manager.GetStudent(1);

Assert.AreEqual("Jane Doe", updated.Name);
Assert.AreEqual(21, updated.Age);
}
}

测试方法详解

  • Setup:这个方法使用 NUnit 的 [SetUp] 属性标记,它在每个测试用例开始前运行。用于初始化测试环境。
  • TestAddAndRetrieveStudent:测试添加学生和检索学生功能。
  • TestRemoveStudent:测试删除学生功能。
  • TestUpdateStudent:测试更新学生信息功能。

在 Visual Studio 中运行测试

完成测试代码编写后,您可以在Visual Studio中运行这些测试。

  • 打开“测试”菜单,选择“测试资源管理器”。
  • 在测试资源管理器中,您会看到所有的测试用例。您可以运行单个测试用例或者所有测试用例。
  • 测试执行完毕后,您可以在测试资源管理器中查看测试结果。

测试结果

结论

通过本系列文章,我们学习了如何在C#中创建和管理对象,以及如何使用单元测试来验证这些对象的行为。这些技能对于任何希望提高软件质量的C#开发者来说都是必不可少的。希望这些内容对您有所帮助,祝您在C#编程旅程中取得成功!