2014-11-14 3 views
0

Я запускаю JUnit 4 с AnyLogic. В одном из моих тестов мне нужен доступ к тесту Experiment. Есть ли какой-либо чистый способ доступа к нему во время выполнения? Например, существует ли статический метод вдоль линий Experiment.getRunningExperiment()?Получение текущего экземпляра эксперимента во время выполнения

ответ

1

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

Однако вы можете использовать getEngine().getExperiment() от в пределах модель. Вероятно, вам нужно больше объяснить свой контекст использования. Если вы используете AnyLogic Pro и экспортируете модель для автономной работы, вы должны иметь доступ к экземпляру эксперимента в любом случае (как в справке «Запуск модели извне без интерфейса»).

Вы пытаетесь запустить тесты JUnit от в пределах Эксперимент? Если да, каков ваш общий дизайн? Очевидно, что JUnit не сидит в этом сценарии, так как он «ожидает» создавать и запускать тестируемую вещь. Для моих автоматизированных тестов (где я не могу экспортировать его автономно, потому что я не использую AnyLogic Pro), я решил, что было проще избежать JUnit (это всего лишь основа для всех) и реализовать тесты «напрямую» (путем мои компоненты модели записывают выходные данные, а в конце прогона в эксперименте эксперимент сравнивает выходы с предварительно подготовленными ожидаемыми и показывает флаг, если тест прошел или не прошел). С AnyLogic Pro вы все равно можете экспортировать автономную версию и использовать JUnit для запуска экспериментов «уже-тест» (с тестом JUnit, который проверяет эксперимент на testPassed Boolean, установленный в конце или что-то еще).

Факт, что вы хотите получить работает экспериментов предполагает, что вы потенциально делаете это, в то время как запуска потенциально выполняются. Если да, не могли бы вы немного объяснить свои требования?

+0

Я запускаю тесты JUnit из эксперимента, да. Я не использую его для тестирования модели в целом: я использую ее для тестирования компонентов модели *. (В конце концов, это цель JUnit и модульного тестирования в целом). Мои тесты отключают людей, здания, подсистемы , и т. д. от остальной части модели и протестировать их индивидуально. Для не-Агентов это легко. Для Агентов, ну, это заняло некоторое время. Я бы использовал 'getEngine()' на них, но проблема в том, что я должен дать им «Двигатель», в первую очередь, поэтому мне нужен вызов. Сейчас у меня есть рабочее «решение», но это, безусловно, взлом. –

+0

OK; Я предположил, что вы являетесь компонентами тестирования модулей. Но вы можете настроить агентов верхнего уровня, которые просто составят тестируемые компоненты (с использованием фальшивых/mock-агентов/объектов), и, поскольку они выполняются в эксперименте, они имеют доступ к экземпляру Engine. Затем имейте выходные файлы, необходимые для вашего теста (например, используя ведение журнала Java) и/или используйте простые Java-утверждения. –

+0

Но я согласен с тем, что было бы здорово, если бы вы могли заставить JUnit работать внутри Эксперимента, а это просто «оболочка», чтобы называть его. Вероятно, вам нужно больше объяснить свой дизайн, чтобы подумать о том, что может быть возможно; например, как вы создаете экземпляр агентов, если они не содержатся непосредственно в другом агенте? В любом случае, я очень заинтересован в вашей архитектуре, поэтому не стесняйтесь писать мне отдельно. –

 Смежные вопросы

  • Нет связанных вопросов^_^