ตอนที่ 17: โดย Toby Huang ในซานฟรานซิสโก แคลิฟอร์เนีย (มกราคม 2021)
ตอนก่อนหน้า
การทดสอบเบราว์เซอร์เป็นรูปแบบการทดสอบอัตโนมัติสำหรับโค้ดโครเมียมที่เป็นแบบต้นทางถึงปลายทางมากกว่าการทดสอบหน่วย การทดสอบเบราว์เซอร์จะสร้างอินสแตนซ์เบราว์เซอร์และทดสอบองค์ประกอบ UI หลายอย่างแทนการทดสอบฟังก์ชันอินพุต/เอาต์พุตเพียงอย่างเดียวอย่างเช่นการทดสอบหน่วย การทดสอบอัตโนมัติที่ผสานรวมมีความสำคัญต่อการจำลองประสบการณ์ของผู้ใช้ตั้งแต่ต้นทางถึงปลายทาง เมื่อเขียนการทดสอบเบราว์เซอร์ คุณมักต้องการตั้งค่าแบบเป็นโปรแกรมที่ผู้ใช้ทำด้วยตนเองได้ mixins คือชุดเครื่องมือสำหรับดำเนินการตั้งค่าการทดสอบเบราว์เซอร์ที่ไม่สำคัญในรูปแบบที่นำมาใช้ใหม่ได้
ตัวอย่างมิกซ์ซินที่มีประโยชน์
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}; };
ประโยชน์หลักอย่างหนึ่งของมิกซ์อินคือการใช้การจัดองค์ประกอบแทนการสืบทอดและหลีกเลี่ยงปัญหาเกี่ยวกับการสืบทอดเพชรหลายรายการ
การรับค่าจากคลาสฐานทดสอบมากกว่า 1 คลาสจะนำไปสู่ปัญหาระดับไดมอนด์
แต่คุณจะผสมผสานมิกซ์และจับคู่ในขณะที่หลีกเลี่ยงปัญหานี้ได้ การใช้มิกซ์ซินไม่ได้เป็นการกำจัดการสืบทอดทั้งหมดเนื่องจากคลาสทดสอบของเบราว์เซอร์ยังคงต้องรับค่าจาก MixinBasedInProcessBrowserTest
แต่โชคดีที่คลาสพื้นฐานเป็นคลาสอเนกประสงค์และใช้ทรัพยากรน้อย