#java #dependency-injection #playframework
#java #dependency-injection #playframework
Вопрос:
Я получаю ошибку внедрения конструктора в своем приложении. Ранее тот же код работал нормально. Внезапно тест проваливается. Не удалось выяснить основную причину сбоя.
Вот мой код :
Класс AppStartModule
public class AppStartModule extends AbstractModule { private final static Logger LOGGER = LoggerFactory.getLogger(AppStartModule.class); requestStaticInjection(SomeUtil.class); requestStaticInjection(SomeConstants.class); bind(SomeConstants.class).asEagerSingleton(); }
Класс некоторых констант
@Singleton public class SomeConstants { @Inject private static Configuration playconfiguration; @Inject private static SomeUtil someUtil; @Inject public SomeConstants(Configuration config, SomeUtil someUtil){ } }
Класс SomeUtil
@Singleton public class SomeUtil { private static Configuration config; @Inject public SomeUtil(final Configuration configuration) { config = configuration; } }
Я получаю исключение во время выполнения моего тестового класса :
Некоторый самый простой Класс
@RunWith(MockitoJUnitRunner.class) public class SomeUtilTest { private static Application myTestApp; private static SomeUtil someUtil; private static Configuration configuration; @BeforeClass public static void start() { try { Config config = ConfigFactory.parseFile(new File("/some/path/Conf-File.conf")); config = ConfigFactory.load(config); configuration = new Configuration(config); myTestApp = new GuiceApplicationBuilder(). .configure(configuration) .build(); // below someUtil value is coming as null someUtil = myTestApp.injector().instanceOf(SomeUtil.class); Helpers.start(myTestApp); } catch(Exception e){ // print the exception } } // here I have some test Methods. }
When I run the class I am getting the below error :
[error] SomeUtilTest - DevData = "[Error While initializing app :: Unable to create injector, see the following errors:) Error injecting constructor, java.lang.NullPointerException at SomeConstants.lt;initgt;(SomeConstants.java:68) at AppStartModule.configure(AppStartModule.java:77) (via modules: com.google.inject.util.Modules$OverrideModule -gt; AppStartModule) while locating SomeConstants error]"
I tried to add the below to binders, but no use :
myTestApp = new GuiceApplicationBuilder() .configure(configuration) .bindings((Module) new SomeUtil(configuration)) .bindings((Module) new SomeConstants(configuration, someUtil)) .build();
Please note that this same code was initially working but failing now. Can anyone please help.