"маршрутизатор не найден" при модульном тестировании контроллеров PlayFramework
У меня возникли проблемы с попыткой модульного тестирования моих контроллеров, следуя инструкциям документации игровой платформы.
Я создал новое приложение, используя шаблон Java. Заменил сгенерированный ApplicationTest на ApplicationTest документов, исправил ошибки компиляции, связанные с неправильными пакетами, но все еще что-то не так с дополнительными конфигурациями, которые передаются в FakeApplication (ImmutableMap.of("play.http.router", "javaguide.tests.Routes"))
Я пробовал много разных имен и каталогов на javaguide.tests.Routes
, но я всегда получаю ошибку ниже.
[error]
[error] 1) Error in custom provider, Configuration error: Configuration error[Router not found: javaguide.tests.Routes]
[error] while locating play.api.test.FakeRouterProvider
[error] while locating play.api.routing.Router
[error]
[error] 1 error, took 2.931 sec
[error] at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1025)
[error] at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051)
[error] at play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:321)
[error] at play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:316)
[error] at play.api.Application$class.routes(Application.scala:111)
[error] at play.api.test.FakeApplication.routes(Fakes.scala:197)
[error] at play.api.Play$.start(Play.scala:89)
[error] at play.api.Play.start(Play.scala)
[error] at play.test.Helpers.start(Helpers.java:450)
[error] at play.test.WithApplication.startPlay(WithApplication.java:44)
[error] ...
[error] Caused by: Configuration error: Configuration error[Router not found: javaguide.tests.Routes]
[error] at play.api.Configuration$.configError(Configuration.scala:178)
[error] at play.api.Configuration.reportError(Configuration.scala:829)
[error] at play.api.routing.Router$$anonfun$load$2.apply(Router.scala:67)
[error] at play.api.routing.Router$$anonfun$load$2.apply(Router.scala:66)
[error] at scala.Option.map(Option.scala:146)
[error] at play.api.routing.Router$.load(Router.scala:66)
[error] at play.api.inject.RoutesProvider.get$lzycompute(BuiltinModule.scala:66)
[error] at play.api.inject.RoutesProvider.get(BuiltinModule.scala:63)
[error] at play.api.test.FakeRouterProvider.get$lzycompute(Fakes.scala:259)
[error] at play.api.test.FakeRouterProvider.get(Fakes.scala:259)
[error] at play.api.test.FakeRouterProvider.get(Fakes.scala:258)
[error] at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
[error] at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:72)
[error] at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
[error] at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:62)
[error] at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
[error] at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
[error] at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
[error] ... 44 more
[error] Failed: Total 21, Failed 1, Errors 0, Passed 19, Skipped 1
Кто-нибудь знает, что мне не хватает, или может поделиться ссылкой на проект github, на котором работают подобные тесты?
Если это поможет, анатомия приложения Play Framework: https://playframework.com/documentation/2.4.x/Anatomy
2 ответа
Я столкнулся с той же проблемой вчера, и я только что ответил на свой собственный вопрос, пожалуйста, посмотрите, поможет ли ответ на этот вопрос: Play 2.4: Как отключить загрузку файла маршрутов во время юнит-тестов?
Можете ли вы проверить, что вы указали свой файл маршрутов в пакете, где он должен быть, т.е. javaguide.tests
javaguide.tests.routes:
GET / controllers.Application.index()