Küçük bir projeyi miras aldım ve eklediğim tüm yeni kodlar için Birim Testleri yazarak genişletmek ve aynı anda sabitlemek istiyorum. Birinci sınıf,, TypedAudioCreator
ses dosyaları oluşturur ve bu ilk önce test etmek ve ikinci için kod yazmak çok kolay olduğu ortaya çıktı.
Ancak, yazma zamanı geldiğinde TypedAudioPlayer
, bunu nasıl test edebileceğim hakkında hiçbir fikrim yoktu. Ses çalmanın temellerine odaklanan çok küçük bir sınıf:
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'de hala çok yeniyim, ancak uygulamanın faydalarının farkındayım ve daha iyi olmaya çalışıyorum. Önce Code yazdım, burada test yok, ama bu TDD'nin çözme şeklini düzgün bir şekilde düşünmek için çok tembel olduğum oldu. Sorum şu: Bu sınıfı nasıl test etmeliyim / test edebilirim?
audioFile.SoundPlayer
. Sonra bu alay ile test edin PlaySync
ve Dispose
doğru yerlerde çağrıldığını doğrulayın . Ayrıca StartedPlayingHandler
ve StoppedPlayingHandler
mümkünse enjekte etmek istersiniz .