আপনি সু-প্রতিষ্ঠিত পদ্ধতি এবং নিদর্শনগুলির সাথে আপনার রচনা অ্যাপটি পরীক্ষা করতে পারেন৷
বিচ্ছিন্নভাবে পরীক্ষা করুন
ComposeTestRule
আপনাকে যেকোনও কম্পোজযোগ্য প্রদর্শন করে একটি কার্যকলাপ শুরু করতে দেয়: আপনার সম্পূর্ণ অ্যাপ্লিকেশন, একটি একক স্ক্রীন বা একটি ছোট উপাদান। আপনার কম্পোজেবলগুলি সঠিকভাবে এনক্যাপসুলেট করা হয়েছে কিনা তা পরীক্ষা করাও এটি একটি ভাল অভ্যাস এবং তারা স্বতন্ত্রভাবে কাজ করে, সহজ এবং আরও বেশি ফোকাসড UI পরীক্ষার অনুমতি দেয়।
এর মানে এই নয় যে আপনার শুধুমাত্র ইউনিট UI পরীক্ষা তৈরি করা উচিত। আপনার UI এর বৃহত্তর অংশগুলির স্কোপিং UI পরীক্ষাগুলিও খুব গুরুত্বপূর্ণ।
আপনার নিজস্ব সামগ্রী সেট করার পরে কার্যকলাপ এবং সংস্থান অ্যাক্সেস করুন৷
প্রায়শই আপনাকে composeTestRule.setContent
ব্যবহার করে পরীক্ষার অধীনে বিষয়বস্তু সেট করতে হবে এবং আপনাকে অ্যাক্টিভিটি রিসোর্সও অ্যাক্সেস করতে হবে, উদাহরণস্বরূপ বলা যায় যে একটি প্রদর্শিত পাঠ্য একটি স্ট্রিং রিসোর্সের সাথে মেলে। যাইহোক, আপনি createAndroidComposeRule()
দিয়ে তৈরি একটি নিয়মে setContent
কল করতে পারবেন না যদি কার্যকলাপটি ইতিমধ্যেই এটিকে কল করে।
এটি অর্জন করার জন্য একটি সাধারণ প্যাটার্ন হল ComponentActivity
এর মতো খালি কার্যকলাপ ব্যবহার করে একটি AndroidComposeTestRule
তৈরি করা।
class MyComposeTest {
@get:Rule
val composeTestRule = createAndroidComposeRule<ComponentActivity>()
@Test
fun myTest() {
// Start the app
composeTestRule.setContent {
MyAppTheme {
MainScreen(uiState = exampleUiState, /*...*/)
}
}
val continueLabel = composeTestRule.activity.getString(R.string.next)
composeTestRule.onNodeWithText(continueLabel).performClick()
}
}
মনে রাখবেন আপনার অ্যাপের AndroidManifest.xml
ফাইলে ComponentActivity
যোগ করতে হবে। আপনার মডিউলে এই নির্ভরতা যোগ করে এটি সক্ষম করুন:
debugImplementation("androidx.compose.ui:ui-test-manifest:$compose_version")
কাস্টম শব্দার্থবিদ্যা বৈশিষ্ট্য
আপনি পরীক্ষায় তথ্য প্রকাশ করতে কাস্টম শব্দার্থবিদ্যা বৈশিষ্ট্য তৈরি করতে পারেন। এটি করার জন্য, একটি নতুন SemanticsPropertyKey
সংজ্ঞায়িত করুন এবং SemanticsPropertyReceiver
ব্যবহার করে এটি উপলব্ধ করুন।
// Creates a semantics property of type Long.
val PickedDateKey = SemanticsPropertyKey<Long>("PickedDate")
var SemanticsPropertyReceiver.pickedDate by PickedDateKey
এখন semantics
মডিফায়ারে সেই সম্পত্তিটি ব্যবহার করুন:
val datePickerValue by remember { mutableStateOf(0L) }
MyCustomDatePicker(
modifier = Modifier.semantics { pickedDate = datePickerValue }
)
পরীক্ষা থেকে, সম্পত্তির মান জাহির করতে SemanticsMatcher.expectValue
ব্যবহার করুন:
composeTestRule
.onNode(SemanticsMatcher.expectValue(PickedDateKey, 1445378400)) // 2015-10-21
.assertExists()
রাষ্ট্র পুনরুদ্ধার যাচাই করুন
যখন কার্যকলাপ বা প্রক্রিয়া পুনরায় তৈরি করা হয় তখন আপনার রচনা উপাদানগুলির অবস্থা সঠিকভাবে পুনরুদ্ধার করা হয়েছে তা যাচাই করুন৷ StateRestorationTester
ক্লাসের সাথে কার্যকলাপ বিনোদনের উপর নির্ভর না করে এই ধরনের চেকগুলি সম্পাদন করুন।
এই ক্লাসটি আপনাকে কম্পোজেবলের বিনোদন অনুকরণ করতে দেয়। rememberSaveable
বাস্তবায়ন যাচাই করার জন্য এটি বিশেষভাবে কার্যকর।
class MyStateRestorationTests {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun onRecreation_stateIsRestored() {
val restorationTester = StateRestorationTester(composeTestRule)
restorationTester.setContent { MainScreen() }
// TODO: Run actions that modify the state
// Trigger a recreation
restorationTester.emulateSavedInstanceStateRestore()
// TODO: Verify that state has been correctly restored.
}
}
বিভিন্ন ডিভাইস কনফিগারেশন পরীক্ষা করুন
অ্যান্ড্রয়েড অ্যাপগুলিকে অনেক পরিবর্তনশীল অবস্থার সাথে খাপ খাইয়ে নিতে হবে: উইন্ডোর আকার, লোকেল, ফন্টের আকার, অন্ধকার এবং হালকা থিম এবং আরও অনেক কিছু। এই শর্তগুলির বেশিরভাগই ব্যবহারকারী দ্বারা নিয়ন্ত্রিত ডিভাইস-স্তরের মান থেকে উদ্ভূত এবং বর্তমান Configuration
উদাহরণের সাথে প্রকাশ করা হয়েছে। একটি পরীক্ষায় সরাসরি বিভিন্ন কনফিগারেশন পরীক্ষা করা কঠিন কারণ পরীক্ষাটিকে অবশ্যই ডিভাইস-স্তরের বৈশিষ্ট্যগুলি কনফিগার করতে হবে।
DeviceConfigurationOverride
হল একটি শুধুমাত্র-পরীক্ষার API যা আপনাকে @Composable
কন্টেন্ট পরীক্ষার জন্য স্থানীয়ভাবে বিভিন্ন ডিভাইস কনফিগারেশন অনুকরণ করতে দেয়।
DeviceConfigurationOverride
এর সঙ্গী বস্তুতে নিম্নলিখিত এক্সটেনশন ফাংশন রয়েছে, যা ডিভাইস-স্তরের কনফিগারেশন বৈশিষ্ট্যকে ওভাররাইড করে:
-
DeviceConfigurationOverride.DarkMode()
: সিস্টেমটিকে অন্ধকার থিম বা হালকা থিমে ওভাররাইড করে। -
DeviceConfigurationOverride.FontScale()
: সিস্টেম ফন্ট স্কেল ওভাররাইড করে। -
DeviceConfigurationOverride.FontWeightAdjustment()
: সিস্টেম ফন্টের ওজন সমন্বয় ওভাররাইড করে। -
DeviceConfigurationOverride.ForcedSize()
: ডিভাইসের আকার নির্বিশেষে একটি নির্দিষ্ট পরিমাণ স্থান জোর করে। -
DeviceConfigurationOverride.LayoutDirection()
: লেআউটের দিক (বাম-থেকে-ডান বা ডান-থেকে-বামে) ওভাররাইড করে। -
DeviceConfigurationOverride.Locales()
: লোকেল ওভাররাইড করে। -
DeviceConfigurationOverride.RoundScreen()
: স্ক্রীনটি গোলাকার হলে ওভাররাইড করে।
একটি নির্দিষ্ট ওভাররাইড প্রয়োগ করতে, পরামিতি হিসাবে প্রয়োগ করতে ওভাররাইড পাস করে DeviceConfigurationOverride()
শীর্ষ-স্তরের ফাংশনে একটি কলে পরীক্ষার অধীনে সামগ্রীটি মোড়ানো করুন।
উদাহরণস্বরূপ, নিম্নোক্ত কোডটি স্থানীয়ভাবে ঘনত্ব পরিবর্তন করতে DeviceConfigurationOverride.ForcedSize()
ওভাররাইড প্রয়োগ করে, MyScreen
কম্পোজেবলকে একটি বড় ল্যান্ডস্কেপ উইন্ডোতে রেন্ডার করতে বাধ্য করে, এমনকি যে ডিভাইসটিতে পরীক্ষাটি চলছে সেটি সরাসরি উইন্ডোর আকার সমর্থন না করলেও :
composeTestRule.setContent { DeviceConfigurationOverride( DeviceConfigurationOverride.ForcedSize(DpSize(1280.dp, 800.dp)) ) { MyScreen() // Will be rendered in the space for 1280dp by 800dp without clipping. } }
একসাথে একাধিক ওভাররাইড প্রয়োগ করতে, DeviceConfigurationOverride.then()
ব্যবহার করুন :
composeTestRule.setContent { DeviceConfigurationOverride( DeviceConfigurationOverride.FontScale(1.5f) then DeviceConfigurationOverride.FontWeightAdjustment(200) ) { Text(text = "text with increased scale and weight") } }
অতিরিক্ত সম্পদ
- অ্যান্ড্রয়েডে অ্যাপ পরীক্ষা করুন : প্রধান অ্যান্ড্রয়েড টেস্টিং ল্যান্ডিং পৃষ্ঠাটি পরীক্ষার মৌলিক বিষয় এবং কৌশলগুলির একটি বিস্তৃত দৃশ্য প্রদান করে।
- পরীক্ষার মৌলিক বিষয়গুলি : একটি Android অ্যাপ পরীক্ষা করার পিছনে মূল ধারণাগুলি সম্পর্কে আরও জানুন।
- স্থানীয় পরীক্ষা : আপনি আপনার নিজস্ব ওয়ার্কস্টেশনে স্থানীয়ভাবে কিছু পরীক্ষা চালাতে পারেন।
- ইন্সট্রুমেন্টেড পরীক্ষা : যন্ত্রযুক্ত পরীক্ষা চালানোও ভালো অভ্যাস। অর্থাৎ, যে পরীক্ষাগুলি সরাসরি ডিভাইসে চলে।
- ক্রমাগত ইন্টিগ্রেশন : ক্রমাগত ইন্টিগ্রেশন আপনাকে আপনার পরীক্ষাগুলিকে আপনার স্থাপনার পাইপলাইনে একত্রিত করতে দেয়।
- বিভিন্ন স্ক্রীনের মাপ পরীক্ষা করুন : ব্যবহারকারীদের জন্য উপলব্ধ কিছু অনেক ডিভাইসের সাথে, আপনার বিভিন্ন স্ক্রীন মাপের জন্য পরীক্ষা করা উচিত।
- এসপ্রেসো : ভিউ-ভিত্তিক UI-এর উদ্দেশ্যে, Espresso জ্ঞান এখনও রচনা পরীক্ষার কিছু দিকগুলির জন্য সহায়ক হতে পারে।