私は小さなプロジェクトを継承しており、追加するすべての新しいコードの単体テストを作成して、プロジェクトを拡張し、同時に安定させたいと考えています。最初のクラス、TypedAudioCreator
はオーディオファイルを作成し、これは最初にテストし、2番目のコードを書くのが非常に簡単であることが判明しました。
しかし、書くときが来たときTypedAudioPlayer
、どうやってテストできるかわかりませんでした。サウンドの再生の基本に焦点を当てた非常に小さなクラスです。
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);
}
}
私はまだTDDに非常に新しいですが、練習の利点を理解し、それをより良くしようと試みています。私は最初にコードを書きましたが、ここにはテストはありませんが、それはTDDの解決方法を適切に考えるのが面倒でした。私が持っている質問は、このクラスをどのようにテストする必要がありますか?
audioFile.SoundPlayer
。次に、このモックでテストし、PlaySync
それDispose
が正しい場所で呼び出されることを確認します。またStartedPlayingHandler
、StoppedPlayingHandler
可能であれば、を注入できるようにします。