【问题标题】:Can Pex automatically discover type overflow / underflow conditions?Pex 可以自动发现类型上溢/下溢情况吗?
【发布时间】:2026-02-04 09:05:02
【问题描述】:

假设有这样的方法(C#):

public static int Add(int x, int y)
{
    return x + y;
}

如果总和不适合int 数据类型,则可能是错误情况,值得进行单元测试。 Pex 是否能够识别此类错误并为这些错误生成单元测试?

【问题讨论】:

    标签: c# .net unit-testing pex


    【解决方案1】:

    是的,它非常擅长。在介绍 Pex 时,他们会经常使用在 Java 库的二进制排序例程中发现的错误,在该错误中,当找到新的中点时,对于非常大的数组会溢出。一组相关的错误是闰年错误,它们通常会使用 Microsoft 自己的产品(Azure?)中的一个功能,该功能在野外显示了其中一个。

    Pex 捕获许多不同类别的错误,包括溢出、下溢、空引用、无效参数,甚至是您在应用程序中抛出的任何自定义异常。我强烈建议您阅读一些入门指南,然后将 Pex 与代码合同结合起来,从长远来看让您的生活更轻松。

    【讨论】:

    • 在使用哈希表时甚至会导致哈希冲突。就是这么好。
    • @BryanAnderson,你能分享一个相关例子的链接吗?我试图在问题中的方法上运行 Pex 自动发现,但它没有检测到溢出/下溢条件。
    • 看看channel9.msdn.com/Blogs/Peli/…,它现在更老了,但仍然是一个很好的介绍。您可能还需要使用上溢/下溢检查进行编译以测试您的 add 方法,我相信大多数构建默认情况下它们往往是关闭的。
    最近更新 更多