2010-07-27 4 views
3

J'ai récemment joué avec .NET SpeechSynthesizer.Comment tester cette unité?

et j'ai une méthode qui prend une chaîne et crée un fichier .wav sur cette chaîne. mais comment puis-je tester cette méthode?

me semble que cette situation est celle dans laquelle les tests unitaires ne peuvent pas vous aider. ai-je raison ?

Répondre

4

Que voulez-vous tester ici? L'API .NET SpeechSynthesizer écrit-elle le fichier wave ou envoie-t-il quelque chose à votre code qui écrit le fichier wave?

Tester ceci est identique à tester toute autre dépendance. Tout d'abord, isolez-le (mince & encapsulable autour de l'API NET SpeechSynthesizer). Puis validez votre code donne à l'emballage ce que vous pensez qu'il devrait être donné et agit sur les données renvoyées de la façon dont il devrait agir. Laissez tester l'API .NET SpeechSynthesizer à quelqu'un d'autre (les créateurs de l'API). Test du wrapper est un test d'intégration (ne laissez pas le nom vous empêcher de le faire dans un manoir TDD si c'est votre truc), et vous devrez probablement être assez lâche sur ce que vous validez ("Speak (string) provoque la croissance du fichier de sortie "). Mais encore une fois, vous n'avez pas besoin de valider les travaux de l'API.

2

Lorsque le code a des effets secondaires, ce n'est pas un test de couche propre, mais vous pouvez certainement tester les effets secondaires. Ecrivez le résultat dans votre répertoire temporaire. Vérifiez que le fichier est réellement écrit. Vérifiez le format en le chargeant en tant que fichier wave.

Pour vérifier ce qui est réellement dans le fichier WAV, bien vous ne voulez probablement pas analyser le fichier wave directement. Dans ce cas, votre test doit surveiller quels paramètres sont envoyés au générateur WAV, pour vérifier qu'ils sont conformes aux attentes.

0

Vous avez accès à un logiciel de reconnaissance vocale? Vous pourriez peut-être essayer de l'entraîner pour écouter le discours généré ....?

Ou vous pourriez au moins vérifier le format est correct et non un fichier zéro octet je suppose ...

Vous pourriez être également en mesure de mettre la main (ou les générer youself) des informations statistiques sur les attendus longueur (dans une certaine plage d'erreur) du fichier de sortie, étant donné la phrase d'entrée, la vitesse de la parole, etc.

Questions connexes