He heredado un pequeño proyecto y quiero extenderlo y estabilizarlo al mismo tiempo escribiendo Pruebas unitarias para todos los nuevos códigos que estoy agregando. La primera clase, TypedAudioCreator
, crea archivos de audio y resultó ser muy fácil de probar primero y escribir el código para la segunda.
Sin embargo, cuando llegó el momento de escribir TypedAudioPlayer
, no tenía idea de cómo podría probarlo. Es una clase muy pequeña que se centra en los conceptos básicos de la reproducción de sonido:
public class TypedAudioFilePlayer
{
public event StartedPlayingHandler StartedPlaying;
public event StoppedPlayingHandler StoppedPlaying;
public readonly int TimeBetweenPlays;
private Queue<TypedAudioFile> _playlist = new Queue<TypedAudioFile>();
public TypedAudioFilePlayer(int timeBetweenPlays)
{
TimeBetweenPlays = timeBetweenPlays;
}
public void AddFile(TypedAudioFile file)
{
_playlist.Enqueue(file);
}
public void StartPlaying()
{
ThreadPool.QueueUserWorkItem(ignoredState =>
{
while (_playlist.Count > 0)
{
var audioFile = _playlist.Dequeue();
if (StartedPlaying != null)
StartedPlaying(audioFile);
audioFile.SoundPlayer.PlaySync();
audioFile.SoundPlayer.Dispose();
if (StoppedPlaying != null)
StoppedPlaying(audioFile);
}
});
}
public void StopPlaying()
{
if (StoppedPlaying != null)
StoppedPlaying(null);
}
}
Todavía soy muy nuevo en TDD, pero me doy cuenta de los beneficios de la práctica y me gustaría intentar mejorarlo. He escrito Código primero, no hay pruebas aquí, pero eso era solo que soy demasiado perezoso para pensar correctamente en la forma TDD de resolverlo. La pregunta que tengo es, ¿cómo debería / podría probar esta clase?