TDD는 자동화 된 테스트가 필요하므로 다른 사람들이 Android 프로젝트에서 TDD를 어떻게 적용했는지 듣고 싶습니다. 팀에서 효과가 없었던 것은 무엇 이었습니까? 특히 시각적 테스트를 어떻게 자동화 했습니까? 서비스 레이어 및 모델에 대한 TDD는 볼 수 있지만 TDD 및 활동, 레이아웃에 대한 시각적 변경은 어떨까요?모바일 Android 프로젝트에서 테스트 기반 개발을 어떻게 수행합니까?
답변
UI/Application Exerciser Monkey라고도하는 원숭이 도구는 UI 버그 및 오류를 식별하는 데 매우 유용 할 수 있습니다. 안드로이드 응용 프로그램이 출시되기 전에 apk에 대해 실행하는 것이 좋습니다. 이
원숭이 작동 방법
당신이 어떤 에뮬레이터 인스턴스 또는 장치에 실행할 수있는 명령 줄 도구입니다. 사용자 이벤트의 의사 랜덤 스트림을 시스템에 전송합니다.이 스트림은 개발중인 응용 프로그램 소프트웨어에 대한 스트레스 테스트 역할을합니다. 그것을 제어하기 위해 옵션 목록이 있습니다.
- 기본 구성 : 이벤트의 수
- 제약 :
옵션은 이상을 제어 할 수 패키지에 대한 제한을
- 이벤트 유형 및 주파수
- 디버깅 옵션
원숭이를 실행하는 일반적인 명령입니다 : 자세한 내용은
adb shell monkey [options]
//example
adb shell monkey -p your.package.name -v 500
단위 테스트 안드로이드 애플 리케이션에 대한 officiel 안드로이드 개발자 웹 사이트에이 link에게
유용한 정보를 참조하십시오 ApiDemos에에서
이 샘플 응용 프로그램, 당신은 ActivityUnitTestCase을 찾을 수 있습니다 및 ActivityInstrumentationTestCase 클래스입니다.
이들은 안드로이드 프로그램을 테스트하기위한 유틸리티 클래스입니다. ActivityInstrumentationTestCase 및 ActivityUnitTestCase
android.jar 일반 이전 단위 시험 의 JUnit 테스트 프레임 워크의 일부를 포함한다 : 여기
레퍼런스에 대한 링크이다. 그것을 작성하고 실행하는 방법을 배우려면 ApiDemos 샘플을보십시오.당신은 또한 메모장 샘플 응용 프로그램에 대한 테스트 프로젝트를 또한 SDK의 문서에서 스피너/SpinnerTest 샘플 애플리케이션에서 Robotium! 및 Robolectric
룩을 시도 할 수 있습니다. 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"가 정말로 스텁입니다.
안드로이드 용 TDD를 적용하려면 Android Testing Codelab이 매우 유용 할 것입니다. TDD를 수행하기 전에 MVP, MVVP와 같은 훌륭한 아키텍처 패턴을 적용해야합니다. 그래서 당신은 당신의 활동과 파편에서 훨씬 더 많은 코드를 추출 할 수 있습니다. 활동, 레이아웃의 시각적 변경 등을 위해 코드 랩에서 seventh 지점을 확인할 수 있습니다. 활동 및 시각적 레이아웃 테스트를 위해 TDD를하기 위해 에스프레소를 사용했습니다. 나는 그것을 시도했고 그것은 나에게 매우 도움이되었다.
보너스 :이 제품 (2 년 이상 긴 수명)의 가치가하고 TDD 인 경우 Clean Architecture
- 1. 모바일 개발을 시작하는 방법
- 2. 팀 기반 서버의 복제 작업은 어떻게 수행합니까
- 3. 도메인 기반 디자인을 사용하는 프로젝트에서 어디에서 유효성 검사를 수행합니까?
- 4. 레거시 코드로 테스트 기반 개발을 구현하는 방법은 무엇입니까?
- 5. GWT 개발을 어떻게 테스트합니까?
- 6. 브라우저 기반 모바일 알림
- 7. ARC 기반 프로젝트에서 릴리스가 어떻게 작동합니까?
- 8. 다른 Android 프로젝트에서 adk 리소스를 어떻게 참조합니까?
- 9. Android 용 웹 모바일 애플리케이션로드 테스트
- 10. Android 에뮬레이터에서 모바일 웹 사이트 테스트
- 11. 모바일 애플리케이션 스트레스 테스트
- 12. 오픈 소스 프로젝트에서 개발을 조정하는 좋은 방법
- 13. 누구든지 pojos 테스트 케이스를 수행합니까?
- 14. 개발을 사용자와 어떻게 동기화합니까?
- 15. IOKit 사용자 공간 드라이버 개발을 어떻게 테스트 할 수 있습니까?
- 16. 모바일 앱 개발을 위해 VirtualBox 사용하기?
- 17. 개발을 돕기위한 좋은 모바일 애플리케이션은 무엇입니까?
- 18. NServiceBus와 어떻게 통합 테스트를 수행합니까?
- 19. 어떻게 단위 테스트 데이터베이스 기반 알고리즘? (php)
- 20. MVVM을 사용하여 테스트 우선 개발을 수행하는 방법
- 21. Flex 모바일 개발을 사용하여 Iphone 앱에 대한 푸시 알림
- 22. html5 모바일 앱을 이용한 다 변수 테스트
- 23. MSBUILD에서 작업을 어떻게 수행합니까?
- 24. 장고 삽입을 어떻게 수행합니까?
- 25. JQuery가로드되면 어떻게 콜백을 수행합니까?
- 26. MongoDB에서이 쿼리를 어떻게 수행합니까?
- 27. 파이프 출력을 어떻게 수행합니까?
- 28. 장고에서이 쿼리를 어떻게 수행합니까?
- 29. Mongoose에서 어떻게 쿼리를 수행합니까?
- 30. SQL에서이 작업을 어떻게 수행합니까?
을 확인합니다. 작은 응용 프로그램, 생활 시간 3 개월 TDD 할 너무 비싼. – Siddharth