В настоящее время я оцениваю Spec Explorer, но у меня проблема с абстрактными характеристиками поведения функции. у меня есть что-то вроде:Spec Explorer - Абстрактные спецификации поведения
[TypeBinding("Implementation.ImplementationElement")]
public class ModelElement
{ /*... */ }
public class ModelBehaviour
{
[Rule]
public static void doSomething()
{
ModelElement sel = SelectElement(elements);
// ... do something with sel
}
private static Set<ModelElement> elements = new Set<ModelElement>();
}
Теперь я не хочу, чтобы определить SelectElement(Set<ModelElement> e)
явно в программе модели. Я бы предпочел указать его с постусловием вроде elements.contains(\result);
. Это возможно?
Проблема с явным определением заключается в том, что я буду применять стратегию выбора.
я пытался избежать этой проблемы следующим образом (может быть, я просто отсутствующий что-то небольшое и кто-то может дать мне подсказку, чтобы сделать это правильно):
- Добавить параметр
ModelElement e
вdoSomething
- Добавить условие
Condition.IsTrue(elements.Contains(e))
вdoSomething
- Определим действие в конфигурационном-скрипта
SelectElement
Определить машину
SelectAndDo
в конфиг-Script следующим образом:machine SelectAndDo() : Main { let ImplementationElement e Where {.Condition.IsTrue(e.Equals(SelectElement()));.} in doSomething(e) }
- Использование
SelectAndDo
вместоdoSomething
Однако, это не работает, потому что изучение соответствующей модели входит в состояние ошибки. Если это вообще не работает, есть ли хорошая альтернатива Spec Explorer для Windows, желательно стабильная? Может ли FsCheck быть рекомендованным для тестирования систем с сохранением работоспособности?