2010-02-28 2 views
6

Я использую Google Appengine для Java (GAE/J). Наверху я использую структуру REST для Джерси.Google AppEngine + Local JUnit Tests + Jersey framework + Embedded Jetty

Теперь я хочу запустить локальные тесты JUnit. Тест

К сожалению, комманда Jersey/Jetty генерирует новые темы. GAE ожидает только один поток для запуска. В конце концов, я заканчиваю тем, что не располагаю ни одним хранилищем данных в ресурсах Джерси или несколькими, имеющими разные хранилища данных.

В качестве обходного пути я инициализирую локальный env GAE только один раз, ставя его в статическую переменную и внутри ресурса GAE. Я добавляю много проверок (эти потоки не имеют dev env? Повторно используйте статический). И эти проверки, конечно, должны выполняться только внутри тестов JUnit .. (что я спросил раньше: «Как узнать, работает ли код внутри теста JUnit или нет?» - мне не разрешено публиковать ссылку напрямую здесь: - |)

ответ

4

Возможно использовать свойство системы ... Когда это Junit запустить установить системное свойство Java с помощью виртуальной машины Java арга, который вы можете затем тест на что-то вроде этого:

  • прохода в JVM arg через run config parms при тестировании (в IDE и т. д.), например: -DRunningTestsOnly=true
  • в коде: if ("true".equals(System.getProperty("RunningTestsOnly")))

Я сделал похожий на это в JUnit тестов перед тем, используя предполагаю игнорировать тесты, я думаю, слишком много времени, чтобы работать на моем компьютере Dev пригодного ...

  • проходят в JVM арге: -DexecuteQuickRunningTestsOnly=true
  • игнорирования медленного метода работает тест, если набор свойств я поставил в верхней части методы: assumeThat(System.getProperty("executeQuickRunningTestsOnly", "false"), is("false"));
+0

Также рассмотрите использование переменных среды, доступ к которым осуществляется через код, например, 'String runLevel = System.getenv (« RUN_LEVEL »);'. Этот * независимый от языка * механизм популярен для того, чтобы ваша программа имела разные параметры конфигурации в разных средах (dev, test, integration, CI, production и т. Д.), – gb96

1

Просто идея: Вы можете создать исключение, а затем итерацию по исключению , чтобы увидеть, есть ли в нем класс из пакета junit.