मुझे एक छोटी सी परियोजना विरासत में मिली है और मैं इसे जोड़ना चाहता हूं और एक ही समय में सभी नए कोड जो मैं जोड़ रहा हूं, के लिए यूनिट टेस्ट लिखकर इसे स्थिर कर सकता हूं। प्रथम श्रेणी, TypedAudioCreatorऑडियो फ़ाइलें बनाता है और यह पहले परीक्षण के लिए और दूसरे के लिए कोड लिखने के लिए बहुत आसान निकला।
हालांकि, जब लिखने का समय आया 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यदि संभव हो तो इंजेक्शन लगाने में सक्षम होना चाहते हैं।