답변
단위 테스트 개인 방법, 그냥 조금 틀린 소리. 공용 및 보호 된 메서드는 단위 테스트를위한 후보입니다. private 메소드를 테스트하기 위해서 메소드를 public으로 만들거나 private 메소드를 호출하는 public 메소드에 대해 더 많은 테스트를 생성하고 private 메소드의 핵심 기능을 테스트 할 수 있습니다.
안녕하세요. blog article about this topic을 게시하고 Java 패키지와 AndroidManifest "패키지"의 차이점을 이해하여 내부 메소드를 테스트하는 방법을 보여줍니다.
우리는 Java에서 전통적으로했던 것과 똑같은 트릭을 사용하게 될 것입니다. 테스트 할 메소드를 보호해야합니다.
도움이 되었기를 바랍니다.
1 년 후에도 개인 방법과 필드 테스트에 도움이되는 라이브러리를 제공했습니다. 나는 안드로이드에서 개인적인 방법을 테스트 할 필요가 있다고 생각한다.
당신은 다른 클래스가 접근 할 수 있다고 생각하지 못하도록 당신의 액티비티 메소드를 비공개로 만들고 싶습니다. (프래그먼트가 될 수는 있지만 그건 틀린 연습입니다. 관찰 가능한 옵저버 패턴을 사용하는 것이 낫습니다.) 그런 다음 테스트로만 액세스해야하는 개인 필드와 메소드로 끝납니다.
BoundBox 정확히 일치합니다. 여기서 아래 활동 2 개 전용 필드를 테스트하기 위해 액세스하는 시험의 예이다 : 테스트 프레임 워크 전용 방법을 테스트
@UiThreadTest
public void testCompute() {
// given
boundBoxOfMainActivity = new BoundBoxOfMainActivity(getActivity());
// when
boundBoxOfMainActivity.boundBox_getButtonMain().performClick();
// then
assertEquals("42", boundBoxOfMainActivity.boundBox_getTextViewMain().getText());
}
과 같은 테스트 메소드 프레임 워크에서 볼 수 있습니다. Snicolas에게 감사드립니다. BoundBox를 살펴 보겠습니다. – Sachchidanand
가장 적절한 법적 방법 메소드 위에 주석 @VisibleForTesting되어, 동일한 메소드는 public 메소드처럼 테스트 프레임 워크에서 볼 수 있습니다. 여기에 Official link for VisibleForTesting annotation
이것은 클리너처럼 보입니다. 접근 방식으로 실제 시스템을 테스트 제한으로 변경하지 않아야합니다. 그것을 시도하지 않았지만 왜 다른 많은 사람들이 대답을 준지 궁금해하지 마십시오 – rgv
사적인 방법을 테스트하는 소리가 깨끗한 방법. 그것을 시도 할 것이다. 감사 :) – Sachchidanand
- 1. 유닛 테스트 자체 호출 함수
- 2. 함수 상속의 개인 메소드 테스트 유닛
- 3. 유닛 테스트 MVC 3에서 RenderPartialViewToString을 호출하는 함수
- 4. 유닛 테스트
- 5. 유닛 데이터 액세스 레이어 테스트
- 6. UI 테스트 대 유닛 테스트
- 7. Assert.ThrowsException 비동기 함수 유닛 테스트에서?
- 8. 유닛 테스트 및 로깅과 같은 프로그래밍 실습이 안드로이드에서 중요합니까?
- 9. 유닛 테스트 및 설비
- 10. 유닛 테스트 콘솔 출력
- 11. 유닛 테스트 with Maven
- 12. 어떻게 유닛 테스트 DelegateCommand
- 13. 유닛 테스트 멤버십
- 14. 유닛 테스트 - SqlDataReader 스터브
- 15. 유닛 통신 프로토콜 테스트
- 16. 유닛 테스트 초보자
- 17. 싱글 톤으로 유닛 테스트
- 18. 유닛 테스트 LinqToSqlDomainService
- 19. 유닛 테스트 Sitecore LicenseManager
- 20. 유닛 테스트 단위
- 21. 데이터 기반 유닛 테스트
- 22. 유닛 테스트 리시버 클래스
- 23. 유닛 API 래퍼 테스트
- 24. 유닛 테스트 RavenDb 쿼리
- 25. openGl 디스플레이의 유닛 테스트
- 26. 유닛 테스트 애플리케이션 레이어
- 27. 상위 레벨에서 유닛 테스트
- 28. 스프링 유닛 테스트
- 29. (유닛) ArrayAdapter 테스트
- 30. Yii 유닛 테스트
나는 rfsk2010에 동의합니다. 공용 메서드를 통해 모든 것을 테스트하는 것이 너무 많은 작업 인 경우 클래스가 너무 크고 작업이 너무 많은 코드 냄새가 될 수 있습니다. 이 시점에서 코드를 단일 책임이있는 클래스로 분리 할 수 있습니다. 때때로 이러한 클래스를 재사용 할 수 있으며 단원 테스트를 훨씬 쉽게 할 수 있습니다. – Scott
@downvoter. 제발 downvote에 대한 이유를 설명하십시오 – rfsk2010
그것은뿐만 아니라 내부 방법을 테스트 할 수있는 좋은 것입니다. 계약에 의한 프로그래밍으로 귀하의 권리가 생기지 만, 프로그래밍은 나누기와 분리 (conqueer)를 기반으로하므로 비공개 또는 보호 된 방법을 테스트하지 않으려는 이유가 없습니다. 당신이 준 이유가 너무 제한적이어서 개발자들이 표현한 모든 요구를 충족시키지 못했습니다. – Snicolas