Unit testing 如何对此进行单元测试?

Unit testing 如何对此进行单元测试?,unit-testing,junit,nunit,testing,Unit Testing,Junit,Nunit,Testing,我最近一直在玩.NET语音合成器 我有一个方法,它接受一个字符串,然后用这个字符串创建一个.wav文件。 但是我如何对这个方法进行单元测试呢 在我看来,这种情况是单元测试无法帮助您的。我说得对吗?当代码有这样的副作用时,这不是一个干净的层测试,但您肯定可以测试副作用。将结果写入临时目录。验证文件是否已实际写入。通过将其加载为wave文件来验证格式 为了验证WAV文件中的实际内容,您可能不想直接分析WAV文件。在这种情况下,您的测试需要监控哪些参数被发送到WAV发生器,以验证它们是否符合预期。您可

我最近一直在玩.NET语音合成器

我有一个方法,它接受一个字符串,然后用这个字符串创建一个.wav文件。 但是我如何对这个方法进行单元测试呢


在我看来,这种情况是单元测试无法帮助您的。我说得对吗?

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


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

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

或者你至少可以检查一下格式是否正确,我想不是一个零字节的文件


您还可以获得(或自己生成)关于输出文件预期长度(在一定错误范围内)的统计信息,给定输入句子、语速等。

您想在这里测试什么

.NET SpeechSynthesizer API是编写wave文件还是向编写wave文件的代码输出某些内容

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

测试包装器是一种集成测试(如果这是您的事情,请不要让名称阻止您在TDD manor中进行测试),并且您可能必须对验证内容非常宽松(“说话(字符串)导致输出文件增长”)。但同样,您不需要验证API的工作情况