나의 플랫폼/안드로이드

[Android] Unit Test, Android UI Test 폴더 관리

GsBOB 2018. 5. 18. 10:50

기본적으로 android studio 에서 앱을 생성하기 되면 아래와 같은 폴더 형태가 됩니다.

androidTest 폴더에서는 Android 디바이스에서 UI릍 테스트 하지요.

그리고 test 폴더에서는 간단한 JUnit Test를 하는데요.

위 상태라면 문제 없이 테스트가 잘 동작 합니다.


그럼... 혹시 아래 같은 상황을 보신적은 없으신가요?

웁쓰... 위 정상적인 폴더 형태와 달라진 점 찾으셨나요??

java 폴더가 녹색이 아닌 파란색으로 되어 있네요.

그리고 테스트 소스에 들어가니 온통 빨간색 에러들 뿐입니다.

갑자기 잘되던 놈이 테스트와 관련된 annotation이나 class를 하나 같이 못 찾고 있네요.

(참고로 전 이걸 해결 하는데 반나절 걸린듯 하네요;;;)


원인은 test 폴더를 지정을 별도로 지정 했기 때문 이었습니다.


아래는 app/build.gradle에 있는 소스 입니다.


android {
...
sourceSets {
main {
java.srcDirs = ['src/main/java', 'src/test/java/']
}
test {
java.srcDirs = []
}
}
}

혹시 위와 같이 sourceSets을 지정 했는지 확인 해보세요.

만약 sourceSets이 지정이 되어 있지 않으면 아래와 같은 형태가 default로 지정 됩니다.


https://developer.android.com/studio/test/?hl=ko


위 내용은 src/main/java 폴더는 앱 개발 소스가 들어 있고, 

해당 폴더에 AndroidTest 클래스 경로는 src/androidTest/java  라는 표 입니다.

그리고, JUnit Test 경로는 src/test/java 가 되는 거구요.

(JUnit Test 쪽 경로도 알려주는 표가 어디 있었는데 못 찾았네요. ㅎ)


따라서, 만약 자신의 앱 테스트 소스가 default 폴더에 잘 생성되어 있다면 

app/build.gradle 에 있는 sourceSets을 지워 버리세요.


아니면 알맞게 지정 하시면 됩니다. 아래 처럼요.

sourceSets {
main {
java.srcDirs = ['src/main/java']
}
test {
java.srcDirs = ['src/test/java/']
}
androidTest {
java.srcDirs = ['src/androidTest/java/']
}
}

그럼 다시 처음 처럼 문제 없이 폴더가 녹색으로 바뀌고 테스트도 진행 될 겁니다.

다시 말씀드리지만, 기본 테스트 폴더를 그대로 쓰실 꺼면 sourceSets으로 저렇게 지정하실 필요가 없습니다.


그리고 혹시, 프로젝트에 테스트 폴더가 없거나 지우신 분들이 다시 추가 하고자 할 경우 폴더를 생성 하기만 하면 되는데요.

그냥 아래 형태로 하면 됩니다.

1. src 폴더를 선택하고 마우스 우측 버튼을 눌러 Context Menu를 불러 들인 후, New -> Directory를 선택 하세요.

2. 기본 폴더를 만들 실 꺼면 'test'로 폴더를 만드시구요. 전 이미 폴더가 있기 때문에 'test_other' 이라는 이름을 만들었습니다.

3. 새로 만드신 폴더에서 마우스 우측을 누른 후 , New -> Folder -> Java Folder를 선택 하세요.

4. 'Change Folder Location'을 선택 하신 후, New Folder Location 에 'src/test_other/java'  라고 입력 합니다.

   ( 기본 디폴트로 'test' 폴더를 만드신 분들은 'src/test/java' 라고 입력 하면 되겠죠)

5. 마지막으로 app/build.gradle에 테스트 폴더를 지정 해야 겠죠. (default 폴더로 만드신 분들은 하지 않아도 됩니다.)

sourceSets {
main {
java.srcDirs = ['src/main/java']
}
test {
java.srcDirs = ['src/test/java/', 'src/test_other/java']
}
androidTest {
java.srcDirs = ['src/androidTest/java/']
}
}


그럼 이제 폴더 생성은 아래와 같이 완료가 됩니다.


cf > 만약 default 폴더로 만들었는데 그대로 파란색으로 있을 경우, app/build.gradle에 sourceSets으로 폴더가 지정 되어 있는지 한번 확인해보신 후,

      삭제하시거나 수정 하시면 됩니다.


그럼 테스트 폴더도 만들었겠다. 간단하게 테스트 소스를 추가 하는 것 까지만 해볼께요.

간단하게 MainActivity에 있는 onCreate함수 테스트 소스를 추가해보겠습니다.


1. onCreate에서 마우스 우측을 누른 후, Go To -> Test를 선택 합니다.

2. 그럼 아래와 같은 메뉴가 나오고 'Create New Test...'를 선택 하세요.

(참고로, 이미 해당 함수나 클래스 관련해서 테스트 소스가 있을 경우 아래 메뉴와 함께 출력이 되어 선택 하면 해당 소스로 이동 됩니다.)

3. 테스트 하고자 하는 함수를 체크 합니다.

 (@Before와 @After는 테스트 전후 관리 함수인데.. 자세한 내용은 JUnit Test쪽 검색 하시면 많이 나옵니다.)

3. 그럼 아래와 같이 현재 지정 되어 있는 test 폴더들이 나오구요.

추가하고자 하는 test폴더를 선택 하시면 됩니다.

전 위에서 만든 'test_other' 폴더에 넣어 보겠습니다.

4. 그럼 아래와 같이 해당 패키지와 함께 테스트 소스가 생성이 됩니다.


내용은 그리 중요하지는 않지만,

왠지 저와 같이 불필요한 시간을 보내실 분들에게 도움이 되고자 올립니다.


참고하세요.