【发布时间】:2021-01-06 12:19:33
【问题描述】:
我目前正在尝试为我的一个项目编写一些单元测试,该项目存储有关健身房课程的详细信息列表,但不知道如何执行此操作,因为单元测试对我来说相当新。序列化的方法是 SaveState() 和反序列化的方法是 LoadState() 并且在运行时都可以很好地运行,我只需要编写一些单元测试来快速证明这一点。 allSessions 从中获取的列表(会话)来自另一个保存数据的类,但我不知道在测试时是否真的需要它,或者你是否只是在测试本身中替换了其他东西。非常感谢任何帮助。
public class SessionsManager
{
const string FILENAME = "SessionFile.dat";
//declare private list for events
private List<Session> allSessions;
// Public Property
public List<Session> AllSessions { get => allSessions; set => allSessions = value; }
//creating constructor to hold lists
public SessionsManager()
{
AllSessions = new List<Session>();
}
public void SaveState()
{
//Formatter object
BinaryFormatter biFormatter = new BinaryFormatter();
//stream object to create file types
FileStream outFile = new FileStream(FILENAME, FileMode.Create, FileAccess.Write);
//Save the whole list in one
biFormatter.Serialize(outFile, allSessions);
//Close the stream, dont want them crossing after all
outFile.Close();
}
public void LoadState()
{
//Formatter object
BinaryFormatter biiFormatter = new BinaryFormatter();
//stream object to read file
FileStream InFile = new FileStream(FILENAME, FileMode.Open, FileAccess.Read);
//Deserialise the whole list
allSessions = ((List<Session>)biiFormatter.Deserialize(InFile));
//close stream
InFile.Close();
}
}
【问题讨论】:
-
单元测试方法是对文件流使用依赖注入并模拟它。但是,我会质疑这样的测试会带来多少价值。主要是关于测试标准库,而这些测试已经存在。
-
虽然本身是一个单独的主题并且是一个偏好问题,但 TDD 可以帮助设计主题类,从而识别依赖关系并测试所需的行为。
标签: c# list unit-testing serialization deserialization