使用 Pex 进行参数化单元测试教程
1. 堆约束练习
考虑以下类型:
public class C {
public int F;
}
该类型用于以下方法:
public void AliasChallenge (C x , C y ) {
if (x != null)
if (y != null) {
x.F = 42;
y.F = 23;
// if (x.F == 42)
// throw new Exception (" boom " );
}
}
问题是 Pex 需要探索多少条执行路径(Pex 仅在测试不同执行路径时生成不同的测试输入)。如果包含注释代码,又有多少条路径呢?
我们还可以检查 Pex 内部收集的约束。 GetPathConditionString 会以类似 C# 的语法显示 Pex 内部表示的格式化字符串。也可以尝试 GetRawPathConditionString 来查看 Pex 内部使用的原始表达式,它们以 S 表达式格式呈现。在这个例子中,会看到 select 和 update 函数,这些函数操作描述堆演化和访问的映射。
超级会员免费看
订阅专栏 解锁全文
48

被折叠的 条评论
为什么被折叠?



