我有以下测试方法,它接受一个字符串数组,复制它,对其进行排序,然后断言排序后的复制元素应该与原始元素不同。
在大多数情况下,这个测试应该通过,但我认为如果输入数组恰好已经排序,它应该会失败。
我无法让 PEX 发现这种情况(除了将其作为种子输入提供)。我可以在 PEX 中配置什么,或者更改测试的编写方式,以使 PEX 更有可能发现这个问题吗?发现这样的输入是否超出了 PEX/Z3 的能力?
[TestClass]
public class SortingPexTest
{
[PexMethod(TestEmissionFilter = PexTestEmissionFilter.All, MaxConstraintSolverTime = 4)]
[PexAllowedContractRequiresFailure]
public void TM([PexAssumeNotNull] String[] L0)
{
PexAssume.AreElementsNotNull(L0);
PexAssume.AreDistinctValues(L0);
String[] L1 = new String[L0.Length];
L0.CopyTo(L1, 0);
Array.Sort(L1);
PexAssert.IsTrue(!L0.SequenceEqual(L1));
}
}
Microsoft Pex 0.94.51023.0 Microsoft Pex Visual Studio 扩展