2011-11-30 67 views
0

我正在对一些c#代码运行测试,pex没有用Math.Acos(它是大型switch语句的一部分)覆盖语句。我很好奇,如果有人知道为什么PEX有这个限制?我在网上查找并找不到任何东西。有关pex限制的问题

回答

2

Pex建立了一个它试图覆盖的路径的约束系统(路径条件)。然后它依靠约束求解器为该约束系统生成令人满意的分配。在某些情况下,约束求解器无法找到值(在合理的时间内)。目前主要发生在涉及浮点变量或十进制类型变量的代码中。

例如,假设您想要满足条件Math.Acos(x)< = y。除非Pex可以跟踪前一次执行中输入x(Math.Acos(x)> y)通过Math.Acos函数采取的路径,约束解算器必须了解Math.Acos如何解决这个问题约束。

即使Pex可以访问Math.Acos的实现,由此产生的约束系统对于约束求解器在合理的时间内处理可能仍然太复杂。