вопросы об ограничениях pex - PullRequest
0 голосов
/ 30 ноября 2011

Я запускаю тест на некотором коде c #, и pex не покрывал оператор с Math.Acos (это часть большого оператора switch)Мне любопытно, если кто-нибудь знает, почему у Пекса такое ограничение?Я посмотрел онлайн и ничего не смог найти.

1 Ответ

2 голосов
/ 01 декабря 2011

Pex создает систему ограничений (условие пути) пути, который он пытается охватить следующим.Затем он полагается на решатель ограничений, чтобы сгенерировать удовлетворительное назначение для этой системы ограничений.В некоторых случаях решатель ограничений не может найти значения (в течение разумного времени).На данный момент это в основном происходит для кода, который включает переменные с плавающей запятой или переменные десятичного типа.

Например, предположим, что вы хотите выполнить условие Math.Acos (x) <= y.Если Pex не сможет отследить путь, пройденный через функцию Math.Acos входом x в предыдущем выполнении (где Math.Acos (x)> y), решатель ограничений должен будет понять, как работает Math.Acos, чтобы решитьconstraint.

Даже если у Pex есть доступ к реализации Math.Acos, результирующая система ограничений может быть слишком сложной для того, чтобы решатель ограничений мог обрабатывать ее в течение разумного времени.

...