Google AppEngine + локальные тесты JUnit + платформа Джерси + встроенная пристань - PullRequest
6 голосов
/ 28 февраля 2010

Я использую Google Appengine for Java (GAE / J). Кроме того, я использую REST-каркас Jersey.

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

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

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

Ответы [ 2 ]

5 голосов
/ 04 марта 2010

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

  • передать аргумент JVM через параметры запуска конфигурации при тестировании (возможно, в IDE и т. Д.) Следующим образом: -DRunningTestsOnly=true
  • в коде: if ("true".equals(System.getProperty("RunningTestsOnly")))

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

  • передать в JVM arg: -DexecuteQuickRunningTestsOnly=true
  • Чтобы игнорировать медленно работающий метод теста, если набор свойств я поставил в верхней части метода: assumeThat(System.getProperty("executeQuickRunningTestsOnly", "false"), is("false"));
1 голос
/ 09 мая 2010

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

...