Ich habe ein kleines Projekt geerbt und möchte es erweitern und gleichzeitig stabilisieren, indem ich Unit Tests für den neuen Code schreibe, den ich hinzufüge. Die erste Klasse TypedAudioCreatorerstellt Audiodateien, und dies erwies sich als sehr einfach, zuerst zu testen und dann Code zu schreiben.
Als es jedoch Zeit zum Schreiben wurde TypedAudioPlayer, hatte ich keine Ahnung, wie ich es testen könnte. Es ist eine sehr kleine Klasse, die sich auf die Grundlagen des Soundspiels konzentriert:
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);
}
}
Ich bin noch sehr neu bei TDD, aber ich erkenne die Vorteile der Praxis und möchte versuchen, sie zu verbessern. Ich habe zuerst Code geschrieben, keine Tests hier, aber das war nur so, dass ich zu faul war, um über die TDD-Methode zur Lösung des Problems nachzudenken. Die Frage, die ich habe, ist, wie soll / könnte ich diese Klasse testen?
audioFile.SoundPlayer. Dann testen Sie mit diesem Mock und verifizieren Sie, dass PlaySyncund Disposean den richtigen Stellen aufgerufen werden. Sie möchten auch in der Lage sein, die StartedPlayingHandlerund StoppedPlayingHandlerwenn möglich zu injizieren .