如何对此进行单元测试?

时间:2010-07-27 22:16:32

标签: unit-testing junit nunit testing

我最近一直在玩.NET SpeechSynthesizer。

我有一个方法,它接受一个字符串并从该字符串中创建一个.wav文件。 但是我如何对这种方法进行单元测试呢?

在我看来,像这种情况是单位测试无法帮助你的。我是对的吗?

3 个答案:

答案 0 :(得分:4)

你想在这里测试什么?

.NET SpeechSynthesizer API是否写入波形文件,或者是否输出了写入波形文件的代码?

测试它与测试任何其他依赖项相同。首先隔离它(NET SpeechSynthesizer API周围的薄和可模拟包装)。然后验证您的代码为包装器提供您认为应该给出的内容,并按照应该采取的方式对任何返回的数据执行操作。将.NET SpeechSynthesizer API测试给其他人(API的创建者)。

测试包装器是一个集成测试(不要让这个名称阻止你在TDD庄园中做这件事,如果你的意思),你可能必须对你验证的内容非常松散(“Speak(string) )导致输出文件增长“)。但同样,您不需要验证API的工作原理。

答案 1 :(得分:2)

当代码有这样的副作用时,它不是一个干净的层测试,但你绝对可以测试副作用。将结果写入临时目录。验证文件是否实际写入。通过将格式加载为波形文件来验证格式。

要验证WAV文件中的实际内容,您可能不希望直接分析wave文件。在这种情况下,您的测试需要监视发送到WAV生成器的参数,以验证它们是否符合预期。

答案 2 :(得分:0)

您可以访问任何语音识别软件吗? 你也许可以尝试训练它来听取生成的演讲......?

或者你至少可以检查格式是否正确,而不是我猜的零字节文件......

在给定输入句子,语速等等的情况下,您也可能能够获得(或自己生成)关于输出文件的预期长度(在特定误差范围内)的统计信息。