2012-06-05 4 views
3

TDD는 자동화 된 테스트가 필요하므로 다른 사람들이 Android 프로젝트에서 TDD를 어떻게 적용했는지 듣고 싶습니다. 팀에서 효과가 없었던 것은 무엇 이었습니까? 특히 시각적 테스트를 어떻게 자동화 했습니까? 서비스 레이어 및 모델에 대한 TDD는 볼 수 있지만 TDD 및 활동, 레이아웃에 대한 시각적 변경은 어떨까요?모바일 Android 프로젝트에서 테스트 기반 개발을 어떻게 수행합니까?

+0

을 확인합니다. 작은 응용 프로그램, 생활 시간 3 개월 TDD 할 너무 비싼. – Siddharth

답변

3

UI/Application Exerciser Monkey라고도하는 원숭이 도구는 UI 버그 및 오류를 식별하는 데 매우 유용 할 수 있습니다. 안드로이드 응용 프로그램이 출시되기 전에 apk에 대해 실행하는 것이 좋습니다. 이

원숭이 작동 방법

당신이 어떤 에뮬레이터 인스턴스 또는 장치에 실행할 수있는 명령 줄 도구입니다. 사용자 이벤트의 의사 랜덤 스트림을 시스템에 전송합니다.이 스트림은 개발중인 응용 프로그램 소프트웨어에 대한 스트레스 테스트 역할을합니다. 그것을 제어하기 위해 옵션 목록이 있습니다.

  1. 기본 구성 : 이벤트의 수
  2. 제약 :

    옵션은 이상을 제어 할 수 패키지에 대한 제한을

  3. 이벤트 유형 및 주파수
  4. 디버깅 옵션

원숭이를 실행하는 일반적인 명령입니다 : 자세한 내용은

adb shell monkey [options] 

//example 
adb shell monkey -p your.package.name -v 500 

단위 테스트 안드로이드 애플 리케이션에 대한 officiel 안드로이드 개발자 웹 사이트에이 link에게

유용한 정보를 참조하십시오 ApiDemos에에서

샘플 응용 프로그램, 당신은 ActivityUnitTestCase을 찾을 수 있습니다ActivityInstrumentationTestCase 클래스입니다.

이들은 안드로이드 프로그램을 테스트하기위한 유틸리티 클래스입니다. ActivityInstrumentationTestCaseActivityUnitTestCase

android.jar 일반 이전 단위 시험 의 JUnit 테스트 프레임 워크의 일부를 포함한다 : 여기

레퍼런스에 대한 링크이다. 그것을 작성하고 실행하는 방법을 배우려면 ApiDemos 샘플을보십시오.

당신은 또한 메모장 샘플 응용 프로그램에 대한 테스트 프로젝트를 또한 SDK의 문서에서 스피너/SpinnerTest 샘플 애플리케이션에서 Robotium!Robolectric

3

룩을 시도 할 수 있습니다. Hello, Testing 튜토리얼도 있습니다.

ActivityInstrumentationTestCase가 아닌 ActivityInstrumentationTestCase2를 사용하십시오.

ActivityUnitTestCase의 값이 제한되어 있습니다. 실제 안드로이드 시스템과 크게 다르지 않은 테스트 장치에서 실행됩니다. AndroidInstrumentationTestCase2를 사용하면 더 많은 작업을 할 수 있습니다.

android.test의 모든 테스트 케이스 클래스는 Junit3이 아니라 Junit4를 기반으로합니다. Junit3 온라인에서 많은 문서를 찾을 수 있습니다.

android.test 테스트 케이스 클래스는 "unit tests"를 모방합니다. 리플렉션만으로는 컴포넌트 클래스를 올바르게 인스턴스화 할 수 없으므로 Activity와 같은 일부 구성 요소의 경우 Android에서 Junit3을 사용한 실제 단위 테스트를 수행 할 수 없습니다. ActivityInstrumentationTestCase2와 같은 클래스는 이것을 "마법"으로 극복합니다. Junit3의 TestCase와 매우 유사한 단위 테스트 클래스라고 생각합니다. 유닛 테스트는 외부 의존성을 갖지 않아야하고 Android 작업 (예 :)에는 Android 시스템이 필요하기 때문에이를 "기능 테스트"라고합니다. 나는 이것이 딱딱 거리는 것 같지만 무엇이든간에 ...

단계 : POJO (Plain Ol 'J --- Objects)에서 가능한 한 많이 정의하여 시작하십시오. 단위 테스트에서 테스트합니다. Robotium과 같은 기능 테스트 프레임 워크와의 상호 작용을 테스트하십시오. 안드로이드 객체가 아닌 다른 것에는 mock을 사용하십시오.

거기에서 Android 객체를 테스트하기 위해 android.test.mock의 스텁 Android 객체와 자신의 스텁을 사용하십시오. 마지막으로, 그 밖의 모든 것이 설정되면 안드로이드 테스트 케이스를 사용하여 "프레임 워크"를 테스트하십시오.

모의 Android 객체는 구현하기 쉽지 않습니다. 따라서 android.test 및 android.test.mock의 "mocks"가 정말로 스텁입니다.

1

안드로이드 용 TDD를 적용하려면 Android Testing Codelab이 매우 유용 할 것입니다. TDD를 수행하기 전에 MVP, MVVP와 같은 훌륭한 아키텍처 패턴을 적용해야합니다. 그래서 당신은 당신의 활동과 파편에서 훨씬 더 많은 코드를 추출 할 수 있습니다. 활동, 레이아웃의 시각적 변경 등을 위해 코드 랩에서 seventh 지점을 확인할 수 있습니다. 활동 및 시각적 레이아웃 테스트를 위해 TDD를하기 위해 에스프레소를 사용했습니다. 나는 그것을 시도했고 그것은 나에게 매우 도움이되었다.

보너스 :이 제품 (2 년 이상 긴 수명)의 가치가하고 TDD 인 경우 Clean Architecture

관련 문제