Ho ereditato un piccolo progetto e voglio estenderlo e stabilizzarlo allo stesso tempo scrivendo Test di unità per tutto il nuovo codice che sto aggiungendo. La prima classe, TypedAudioCreator
, crea file audio e questo si è rivelato molto facile da testare prima e scrivere codice per secondo.
Tuttavia, quando è arrivato il momento di scrivere TypedAudioPlayer
, non avevo idea di come avrei potuto testarlo. È una classe molto piccola incentrata sulle basi del suono:
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);
}
}
Sono ancora molto nuovo al TDD, ma realizzo i benefici della pratica e vorrei provare a migliorare. Prima ho scritto Codice, non ci sono test, ma ero solo troppo pigro per pensare correttamente al modo TDD di risolverlo. La domanda che ho è, come dovrei / potrei testare questa lezione?