在 NAudio 中使用断言

Posted

技术标签:

【中文标题】在 NAudio 中使用断言【英文标题】:Using Assert in NAudio 【发布时间】:2018-08-09 11:31:30 【问题描述】:

我在我在this*** 线程上找到的 C# 程序中使用了这部分代码。

using (WaveFileReader reader = new WaveFileReader("myfile.wav"))

    Assert.AreEqual(16, reader.WaveFormat.BitsPerSample, "Only works with 16 bit audio");
    byte[] buffer = new byte[reader.Length];
    int read = reader.Read(buffer, 0, buffer.Length);
    short[] sampleBuffer = new short[read / 2];
    Buffer.BlockCopy(buffer, 0, sampleBuffer, 0, read);

代码使用 NAudio,所以我引用了库并添加了 using NAudio.Wave;,但我收到错误:当前上下文中不存在名称“Assert”。

我该如何解决这个问题?

作为评论可能会更好,但我没有足够的声誉来这样做

【问题讨论】:

【参考方案1】:

Assert 是 XUnit 的一个函数。

添加该引用。并添加 using 指令。

using Xunit;

【讨论】:

谢谢,这修复了上面的错误,但现在它说'Assert'不包含'AreEqual'的定义。知道为什么会这样做吗? 删除对功能不重要的行 Xunit 使用 Equal 来比较期望值和实际值。 MSTest 使用 AreEqual。【参考方案2】:

该代码中的 Assert.AreEqual 来自 NUnit,但在生产代码中完全不需要依赖单元测试框架。如果你想要检查,只要不匹配就抛出某种异常。例如:

if (reader.WaveFormat.BitsPerSample != 16)
    throw new NotSupportedException("Only works with 16 bit audio");

【讨论】:

以上是关于在 NAudio 中使用断言的主要内容,如果未能解决你的问题,请参考以下文章

防御式编程之断言assert的使用

断言与JUnit断言

断言的使用

JMeter断言

assert的使用断言

在条件 (if) 语句中使用 CodeCeption 断言