에피소드 17: 캘리포니아주 샌프란시스코의 Toby Huang (2021년 1월)
이전 에피소드
브라우저 테스트는 단위 테스트보다 엔드 투 엔드에 가까운 Chromium 코드에 대한 자동화된 테스트의 한 형태입니다. 브라우저 테스트는 단위 테스트와 같이 순수한 입출력 기능을 테스트하는 대신 브라우저 인스턴스를 만들고 다양한 UI 요소를 테스트합니다. 통합 자동 테스트는 사용자의 엔드 투 엔드 환경을 시뮬레이션하는 데 중요합니다. 브라우저 테스트를 작성할 때 사용자가 수동으로 실행할 수 있는 설정 작업을 프로그래매틱 방식으로 실행해야 하는 경우가 많습니다. 이를 위해 믹신은 재사용 가능한 방식으로 중요한 브라우저 테스트 설정을 실행하는 도구 모음입니다.
유용한 믹스인의 예는 다음과 같습니다.
- 시크릿 모드 테스트:
GuestUserMixin
- 서버의 사용자 정책을 모의 처리하기 위한
UserPolicyMixin
FakeGaiaMixin
: Gaia 서버의 응답 모의 처리
다양한 용도로 나만의 맞춤 믹스를 만들 수 있습니다.
아래 스니펫은 테스트의 게스트 사용자로 로그인합니다. 기능이 시크릿 모드에서 작동하는지 확인해야 합니다.
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest { private: GuestSessionMixin guest_session_mixin_{&mixin_host_}; };
LoggedInUserMixin
를 사용하면 테스트에 Family Link 사용자로 편리하게 로그인할 수 있습니다. 기능이 자녀 감독 기능과 관련된 모든 사항에 영향을 미치는 경우 관리 대상 사용자를 위한 기능을 테스트해야 합니다. 하위 사용자가 시크릿 모드를 사용 중지했거나 부모의 승인 없이는 확장 프로그램을 설치할 수 없는 경우를 잊어버리는 버그일 수 있습니다. LoggedInUserMixin
는 다른 믹스인으로 구성된 복합 믹스인입니다.
class MyChildBrowserTestClass : public MixinBasedInProcessBrowserTest { protected: void SetUpOnMainThread() override { MixinBasedInProcessBrowserTest::SetUpOnMainThread(); logged_in_user_mixin_.LogInUser(); } private: LoggedInUserMixin logged_in_user_mixin_{&mixin_host_, LoggedInUserMixin::LogInType::kChild, embedded_test_server(), this}; };
믹스인의 주요 이점 중 하나는 상속 대신 컴포지션을 사용하고 다이아몬드 다중 상속 문제를 방지하는 것입니다.
둘 이상의 테스트 기본 클래스에서 상속하면 다이아몬드 문제가 발생하지만 이 문제를 피하면서 믹스인을 혼합할 수 있습니다. 믹스인을 사용해도 상속이 완전히 삭제되는 것은 아닙니다. 브라우저 테스트 클래스가 여전히 MixinBasedInProcessBrowserTest
에서 상속해야 하기 때문입니다. 하지만 다행히 기본 클래스는 범용이며 가볍습니다.