나는 유틸리티 클래스 (활동 없음) 만 포함하는 Android Bitmap 클래스 (AndroindLib라고 부름)를 기반으로 Android 라이브러리 프로젝트를 작성하고 있습니다. Android JUnit을 사용하여 테스트하려고했지만 AnroidLib.apk를 찾을 수 없다고 계속 불평합니다.
단위 테스트 Android 라이브러리 프로젝트에 올바른 방법은 무엇입니까?
답변
문서 인용 :
“라이브러리 프로젝트의 코드 및 리소스에 대한 테스트를 설정하는 데 권장되는 두 가지 방법이 있습니다.
-
라이브러리 프로젝트에 의존하는 애플리케이션 프로젝트를 계측하는 테스트 프로젝트를 설정할 수 있습니다. 그런 다음 라이브러리 별 기능에 대한 테스트를 프로젝트에 추가 할 수 있습니다.
-
라이브러리에 의존하는 표준 애플리케이션 프로젝트를 설정하고 해당 프로젝트에 계측을 배치 할 수 있습니다. 이를 통해 테스트 / 계측 및 테스트 할 코드를 모두 포함하는 자체 포함 된 프로젝트를 만들 수 있습니다. “
답변
테스트 프로젝트에서 라이브러리의 패키지와 동일하도록 패키지 이름을 변경하면됩니다. 예를 들어, 패키지가 "com.example.lib"
. 라이브러리를 대상으로하는 테스트 프로젝트를 만듭니다. 매니페스트 파일에서 package="com.example.lib.test"
, 및 targetPackage="com.example.lib"
. 패키지를 “com.example.lib.test”에서 “com.example.lib”로 변경하십시오 ( targetPackage
그대로 두십시오).
또한, 라이브러리가 테스트 프로젝트에 참조되어 있는지 확인 하지 Java 빌드 경로에 있지만, 일반적인 안드로이드 라이브러리로 : 이클립스에가있는 라이브러리로 표시되어야 Project->Properties->Android
탭하지만, 하지 에 Project->Properties->Java Build Path
탭을 선택합니다.
그런 다음 테스트를 실행하십시오.
답변
http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/ 은 CommonsWare의 답변에서 두 번째 제안을 구현하는 데 필요한 프로세스를 설명하는 데 도움이됩니다.
답변
당 문서 :
라이브러리 모듈 테스트는 앱 테스트와 동일합니다. 가장 큰 차이점은 라이브러리와 해당 종속성이 테스트 APK의 종속성으로 자동 포함된다는 것입니다. 즉, 테스트 APK에는 자체 코드뿐만 아니라 라이브러리의 AAR 및 모든 종속성도 포함됩니다. 별도의 ‘테스트중인 앱’이 없기 때문에 androidTest 작업은 테스트 APK 만 설치 (및 제거)합니다. 여러 매니페스트 파일을 병합 할 때 Gradle은 기본 우선 순위를 따르고 라이브러리의 매니페스트를 테스트 APK의 기본 매니페스트에 병합합니다.
답변
참고 : 이 솔루션은 Eclipse Indigo (3.8.2) 사용을 기반으로하며 기본 원칙은 동일하지만 다른 IDE에 대해 약간 다르게 구현해야 할 수 있습니다.
비슷한 문제가 있었고 다음 작업이 항상 작동한다는 것을 알았습니다.
( 참고 :이 지침은 처음부터 새 프로젝트 그룹을 빌드하기위한 것입니다. 프로젝트 그룹의 일부를 이미 빌드 한 경우 동일한 방식으로 연결되도록 프로젝트를 수정해야 할 수 있습니다. )
- 생성 중에 “Is Library”체크 박스를 선택하여 새 Android 라이브러리 프로젝트를 생성합니다. (예 : “RemingtonAndroidTools”라는 Android 프로젝트).
- Android 라이브러리 프로젝트를 빌드하고 bin 폴더에 jar 파일이 생성되었는지 확인합니다. (예 : “RemingtonAndroidTools.jar”라는 jar 파일)
- Android 테스트 앱으로 사용할 Android 앱을 테스트하기 위해 빈 Android 프로젝트를 만듭니다. (예 : “RemingtonAndroidToolsTestApp”이라는 Android 프로젝트). 테스트를 위해 추가해야하는 것이 없으면 Android 테스트 앱 프로젝트의 소스 코드 나 리소스를 수정할 필요가 없습니다. Android 테스트 앱 프로젝트를 수정하지 않고도 많은 것을 테스트 할 수 있습니다. Android Test App 프로젝트는 Android 라이브러리 프로젝트와 Android Junit 프로젝트를 연결하여 Android Junit을 통해 Android 라이브러리 프로젝트를 테스트 할 수 있도록합니다.
- Android 테스트 앱 프로젝트 (이 예에서는 “RemingtonAndroidToolsTestApp”)에 대한 Java 빌드 경로의 라이브러리 탭으로 이동합니다.
- “Add Jars …”버튼을 통해 Android 라이브러리 프로젝트 (이 예에서는 “RemingtonAndroidTools”)의 jar 파일 (이 예에서는 “RemingtonAndroidTools.jar”)을 추가합니다.
- Android 라이브러리 테스터 역할을 할 새 Android 테스트 프로젝트 (예 : ‘RemingtonAndroidToolsTester’)를 만들고 Android 테스트 앱 프로젝트 (이 예에서는 ‘RemingtonAndroidToolsTestApp’)를 대상으로 선택합니다.
- Android 라이브러리 테스터 프로젝트 (이 예에서는 “RemingtonAndroidToolsTester”)에 대한 Java 빌드 경로의 라이브러리 탭으로 이동합니다.
- “Add Jars …”버튼을 통해 Android 라이브러리 프로젝트 (이 예에서는 “RemingtonAndroidTools”)의 jar 파일 (이 예에서는 “RemingtonAndroidTools.jar”)을 추가합니다.
- Android Library Tester 프로젝트에서 Android 패키지의 마지막 폴더 (예 : “danny.remington.remington_android_tools_test_app.test”)를 찾고 ActivityInstrumentationTestCase2에서 상속되는 테스트 클래스 (예 : “MainActivityTest”)를 추가합니다.
- Android 테스트 앱 (이 예에서는 ‘RemingtonAndroidToolsTestApp’)의 활동 (예 : ‘TestActivity’)을 ActivityInstrumentationTestCase2의 매개 변수로 사용하도록 테스트 클래스 (이 예에서는 “TestActivityTest”)를 편집합니다.
- 테스트 클래스 (이 예에서는 “TestActivityTest”)를 편집하고 super (Class)를 호출하고 Android 테스트 앱의 클래스 (예 : “TestActivity.class”)를 전달하는 기본 생성자를 만듭니다.
다음과 유사한 3 개의 프로젝트 (Android 라이브러리, Android 테스트 앱, Android 라이브러리 테스터)가 있어야합니다.
다음과 유사한 Android 라이브러리를 테스트하기위한 클래스로 끝나야합니다.
package danny.remington.remington_android_tools_test_app.test;
import android.test.ActivityInstrumentationTestCase2;
import danny.remington.remington_android_tools_test_app.TestActivity;
/**
*
*/
public class TestActivityTest extends
ActivityInstrumentationTestCase2<TestActivity> {
public TestActivityTest() {
super(TestActivity.class);
}
}
그런 다음 원하는 테스트를 추가 할 수 있습니다. Android 특정 구성 요소 (예 : Assets 폴더)에 액세스해야하는 경우가 아니면 테스트를 실행하기 위해 Android 테스트 앱 (이 예에서는 ‘RemingtonAndroidToolsTestApp’)을 추가로 참조 할 필요가 없습니다. Android 특정 구성 요소에 액세스해야하는 경우 Android 테스트 앱 (이 예에서는 ‘RemingtonAndroidToolsTestApp’)을 수정 한 다음 표준 Android Junit API에서 제공하는 도구를 통해 참조하면됩니다. (여기에서 자세한 내용을 읽을 수 있습니다 : http://developer.android.com/tools/testing/testing_android.html )
답변
ulitiy 클래스가 Android 특정 코드에 의존하지 않는 경우 표준 JUnit 단위 테스트를 사용할 수 있습니다. Android 버전을 사용할 필요가 없습니다.