1

Robolectric을 사용하여 테스트를 실행하려고하고 있으며 Firebase와 통합되어 있습니다. 나는 MyProject - Test라는 프로젝트를 가지고 있는데,이 테스트는 데이터베이스의 실제 인스턴스에서 테스트를 실행하는 데 사용할 것이다.테스트 -이 프로세스에서 FirebaseApp가 초기화되지 않았습니다.

문제는 시험 전에 정리를 실행할 때, 나는 오류를 가지고 있다는 것입니다 :

java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process null. Make sure to call FirebaseApp.initializeApp(Context) first. 

at com.google.firebase.FirebaseApp.getInstance(Unknown Source) 
at com.google.firebase.database.FirebaseDatabase.getInstance(Unknown Source) 
at com.cgbros.silkhub.activity.listener.LoginActivityUnitTest.cleanUp(LoginActivityUnitTest.kt:26) <28 internal calls> 

테스트 파일 :. https://gist.github.com/augustoerico/e88d3e5b59ae5d023d83c114b8ffa708 (나는 여기에 복사 - 붙여 넣기 소스에 비참하게 실패했습니다 ...)

내가 어떻게이 작업을 할 수 있는지에 대한 통찰력이 있으십니까?

감사합니다.

+0

내가 오늘 (이전 아침에)이 응용 프로그램의'build.gradle' 끝에'apply plugin : 'com.google.gms.google-services'를 추가하는 것을 잊었을 때. 또한이 오류에 대한 이전 질문을 살펴보십시오. https://stackoverflow.com/search?q=Default+FirebaseApp+is+not+initialized+in+this+process+null –

답변

0

좋아, 알아 냈어. 실제로는 개념적인 문제입니다. 문제는 Firebase Android SDK를 사용하여 Android 컨텍스트 외부에서 테스트를 실행하려고한다는 것입니다. 내 테스트는 Android 애플리케이션이 아니며 Android SDK를 사용하려고합니다. 모두 FirebaseApp.initializeApp()은 매개 변수로 Context이 필요합니다.

그럼 내가해야 할 일은 FirebaseDatabase와 상호 작용할 수있는 방법을 찾는 것입니다. 나는 firebase-admin로 이동, 또는 어쩌면이 하나를 사용할 수 있다고 생각 : 나를 도와 시간을내어

https://github.com/bane73/firebase4j 감사합니다 (:

업데이트 **

내가 함께 가야하기로 선택했습니다 **

나중에 참조 할 수 있도록 중포 기지 REST API를 https://firebase.google.com/docs/reference/rest/database/

, 내가 규칙을 조정하여, 대중 전체 액세스 권한을주는거야, 그래서 테스트 설정 및 정리를 쓰기 쉽다. 나는 또한 위의 문 제에 직면

1

나는 또한 동일한 문제를 며칠 전에 보았고 나는 오류가 말하는 것과 같은 방식으로 문제를 해결했다. 초기화하지 않고 Firebase의 인스턴스를 얻으려고하기 때문에 오류가 발생합니다. 이 같은 중포 기지의 인스턴스를 취득하기 전에 코드 줄을 추가하십시오 : 프랭크가 말한대로, 당신은 당신의 build.gradle 파일에 추가 다음 코드 줄, as the last line가 있는지 확인하십시오,

FirebaseApp.initializeApp(this); 

을 또한 전체 파일.

apply plugin: 'com.google.gms.google-services' 
+0

답변 해 주셔서 감사합니다. 필자가 직면 한 문제는 테스트 클래스에서 Firebase를 초기화하고 싶기 때문에 그것을 채울 수 있고 정리할 수 있습니다. 그래서 Context의 인스턴스가 아니기 때문에 "this"를 사용할 수 없습니다. – Kiko

+0

그게 바로 이런 일이 일어난 이유입니다. Context의 인스턴스없이 Firebase를 instantiete 할 수 없습니다. 이 경우 Context 인수를 사용하여 TestClass에 메소드를 작성하십시오.그런 다음 Context의 인스턴스를 인수로 사용하여 ActivityClass에서 해당 메서드를 호출하면됩니다. 확실하게 작동합니다. –

+0

시간을내어 주셔서 감사합니다. (저는 Firebase SDK를 잘못된 방법으로 사용하려고 한 것 같습니다. REST API를 사용하여 데이터베이스를 채우고 정리해야한다고 생각합니다.) – Kiko

0

이자형. 모든 플러그인 다운로드 및 누겟 검사를 수행하십시오. 그러나 결국, 충돌이 Application Package Name이 Google Dev에 할당 된 것과 일치하지 않는 것으로 나타났습니다. 응용 프로그램 패키지 이름은 Google Dev에 할당 된 패키지와 일치해야합니다. Console