나의 플랫폼/안드로이드

[Android] Robolectric 사용 중인지 체크

GsBOB 2019. 9. 2. 09:50
val isRoboUnitTest: Boolean = "robolectric" == Build.FINGERPRINT

 

이렇게 만들어서 사용하면 된다!!

 

라고만 하고 싶지만.. 테스트 코드에 이건 Robolectric을 사용한다고 명시를 해줘야 한다.

 

@RunWith(RobolectricTestRunner::class)
class SomeTest {

    @Test
    fun test() {
    	...
    }
}

그럼 체크가 가능해 진다.

 

혹시나 하나 더 참고 사항으로 아래와 같은 Socket 에러를 보시는 분...

java.io.IOException: socket not created
	at android.net.LocalSocketImpl.bind(LocalSocketImpl.java:305)
	at android.net.LocalServerSocket.__constructor__(LocalServerSocket.java:49)
	at android.net.LocalServerSocket.<init>(LocalServerSocket.java)
	at com.facebook.stetho.server.LocalSocketServer.bindToSocket(LocalSocketServer.java:142)
	at com.facebook.stetho.server.LocalSocketServer.listenOnAddress(LocalSocketServer.java:78)
	at com.facebook.stetho.server.LocalSocketServer.run(LocalSocketServer.java:74)
	at com.facebook.stetho.server.ServerManager$1.run(ServerManager.java:40)

무시해도 되지만 엄청 신경이 쓰이는 부분이다.

이걸 없애고 싶으신 분들은!!

혹시 Steho 라이브러리를 사용하고 있는지 체크해보라.

 

해당 라이브러리에서 초기화를 예외 처리 해놓으면 위 에러 문구가 사라질 것이다.

https://github.com/facebook/stetho/issues/440#issuecomment-286123231

 

IOException: socket not created when running with Roboelectric Test · Issue #440 · facebook/stetho

Getting this error: java.io.IOException: socket not created at android.net.LocalSocketImpl.bind(LocalSocketImpl.java:303) at android.net.LocalServerSocket.__constructor__(LocalServerSocket.java:48)...

github.com

참고하세요.