单元测试(NUnit/xUnit)
本课属于 Coddy C# 学习旅程的“面向对象编程”单元。第 67 课,共 70 课。
挑战
简单为 Library System 项目添加单元测试,完成这个项目!测试对于确保代码正常运行,并在你修改代码后继续正常运行至关重要。你将创建一个专用的测试文件,用来验证图书馆系统的核心功能。
你将继续使用现有的项目结构,并添加一个新的测试文件:
Book.cs:保留 Book 类,其中包含Id、Title、Author、IsAvailable,以及Borrow()和Return()方法。User.cs:保留 User 类,其中包含借阅跟踪功能、MaxBooks常量、CanBorrow(),以及用于管理借阅图书的方法。Library.cs:保留 Library 类,其中包含借阅逻辑、搜索方法,以及GetAllBooks()和GetAllUsers()方法。LibraryTests.cs:这是你要新建的测试文件!创建一个测试类,用来验证图书馆系统是否正常运行。你将编写测试方法来检查各种场景,并报告每项测试是通过还是失败。Program.cs:程序入口,用于运行测试并显示结果。
你的测试类应包含用于测试以下场景的方法:
TestBookBorrow:验证成功借阅一本可借阅的图书,并确认其可借阅状态已改变TestBookBorrowUnavailable:验证借阅一本已被借出的图书会以适当的方式失败TestUserBorrowingLimit:验证用户最多只能借阅 3 本图书TestBookReturn:验证归还已借出的图书是否正常TestSearchByAuthor:验证按作者搜索时是否会返回正确的图书
每个测试方法都应返回一个布尔值,表示测试是否通过。创建一个简单的测试运行器,用于执行所有测试并打印结果。
你将收到以下输入:
- 要运行的测试场景数量(1-5,对应上面列出的测试)
对于每项运行的测试,请按以下格式打印结果:
{TestName}: {PASS|FAIL}所有测试完成后,打印总结:
--- Test Summary ---
Passed: {count}
Failed: {count}
Total: {count}例如,如果输入是:
3输出应为:
TestBookBorrow: PASS
TestBookBorrowUnavailable: PASS
TestUserBorrowingLimit: PASS
--- Test Summary ---
Passed: 3
Failed: 0
Total: 3再举一个运行全部 5 项测试的例子:
5输出应为:
TestBookBorrow: PASS
TestBookBorrowUnavailable: PASS
TestUserBorrowingLimit: PASS
TestBookReturn: PASS
TestSearchByAuthor: PASS
--- Test Summary ---
Passed: 5
Failed: 0
Total: 5每项测试都应创建全新的 Book、User 和 Library 实例,以确保测试相互独立。这样,一项测试的状态就不会影响另一项测试。请把每项测试都看作对系统中特定行为的一次独立验证!
亲手试试
using System;
namespace LibrarySystem
{
class Program
{
public static void Main(string[] args)
{
// 读取要运行的测试数量
int numTests = Convert.ToInt32(Console.ReadLine());
// TODO:创建一个 LibraryTests 对象,并运行前 numTests 个测试
}
}
}
面向对象编程中的所有课
自己练习: C# 在线编译器