Каков наилучший способ модульного тестирования сериализации класса Exception, подобного следующему:
[Serializable]
public abstract class TankBaseException : Exception
{
public TankBaseException() : base() { }
public TankBaseException(string message) : base(message) { }
public TankBaseException(string message, Exception innerException) : base(message, innerException) { }
public TankBaseException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
this.timeStamp = info.GetDateTime(String.Format("{0}.TimeStamp", this.GetType().Name));
this.machineName = info.GetString(String.Format("{0}.MachineName", this.GetType().Name));
}
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
base.GetObjectData(info, context);
string typeName = this.GetType().Name;
info.AddValue(String.Format("{0}.TimeStamp", typeName), this.timeStamp, this.timeStamp.GetType());
info.AddValue(String.Format("{0}.MachineName", typeName), this.machineName, this.machineName.GetType());
}
public override string Message
{
get
{
return String.Format("{0} (Machine Name: {1}; TimeStamp: {2}",
base.Message, this.MachineName, this.TimeStamp);
}
}
private readonly string machineName = Environment.MachineName;
public string MachineName
{
get { return this.machineName; }
}
private readonly DateTime timeStamp = DateTime.Now;
public DateTime TimeStamp
{
get { return this.timeStamp; }
}
}
Это придуманный пример, позволяющий свести пример кода здесь к минимуму.Это будет частью иерархии классов исключений.Я выведу это из своего проекта модульного тестирования, чтобы проверить иерархию базовых классов.Кроме того, я протестирую любые производные классы, которые имеют свои собственные дополнительные функции.
Вопрос в том, как лучше всего тестировать сериализуемые аспекты класса таким образом, чтобы он соответствовал «столпам хороших тестов» Ошерова.- что они:
- заслуживающие доверия
- поддерживаемые
- читаемые
(или любой другой набор руководящих принципов для проведения юнит-тестирования).
Или, другими словами, как я могу проверить, введя наименьшее количество смешанных переменных?