টেস্টিং API

UI উপাদানগুলির সাথে ইন্টারঅ্যাক্ট করার তিনটি প্রধান উপায় রয়েছে:

  • ফাইন্ডাররা আপনাকে এক বা একাধিক উপাদান নির্বাচন করতে দেয় (অথবা শব্দার্থবিদ্যা গাছের নোডগুলি ) দাবী করতে বা তাদের উপর ক্রিয়া সম্পাদন করতে।
  • উপাদানগুলি বিদ্যমান বা নির্দিষ্ট বৈশিষ্ট্য রয়েছে তা যাচাই করতে দাবী ব্যবহার করা হয়।
  • ক্রিয়াগুলি উপাদানগুলিতে সিমুলেটেড ব্যবহারকারীর ইভেন্টগুলিকে ইনজেক্ট করে, যেমন ক্লিক বা অন্যান্য অঙ্গভঙ্গি৷

এই APIগুলির মধ্যে কিছু শব্দার্থবিদ্যা গাছের এক বা একাধিক নোড উল্লেখ করতে একটি SemanticsMatcher গ্রহণ করে।

ফাইন্ডার

আপনি যথাক্রমে এক বা একাধিক নোড নির্বাচন করতে onNode এবং onAllNodes ব্যবহার করতে পারেন, তবে আপনি সবচেয়ে সাধারণ অনুসন্ধানের জন্য সুবিধা সন্ধানকারীও ব্যবহার করতে পারেন, যেমন onNodeWithText , এবং onNodeWithContentDescription । আপনি কম্পোজ টেস্টিং চিট শীটে সম্পূর্ণ তালিকা ব্রাউজ করতে পারেন।

একটি একক নোড নির্বাচন করুন

composeTestRule.onNode(<<SemanticsMatcher>>, useUnmergedTree = false): SemanticsNodeInteraction
// Example
composeTestRule
    .onNode(hasText("Button")) // Equivalent to onNodeWithText("Button")

একাধিক নোড নির্বাচন করুন

composeTestRule
    .onAllNodes(<<SemanticsMatcher>>): SemanticsNodeInteractionCollection
// Example
composeTestRule
    .onAllNodes(hasText("Button")) // Equivalent to onAllNodesWithText("Button")

অবিকৃত গাছ

কিছু নোড তাদের সন্তানদের শব্দার্থবিদ্যা তথ্য একত্রীকরণ. উদাহরণস্বরূপ, দুটি পাঠ্য উপাদান সহ একটি বোতাম পাঠ্য উপাদান লেবেলগুলিকে একত্রিত করে:

MyButton {
    Text("Hello")
    Text("World")
}

একটি পরীক্ষা থেকে, শব্দার্থবিদ্যা গাছ দেখানোর জন্য printToLog() ব্যবহার করুন:

composeTestRule.onRoot().printToLog("TAG")

এই কোড নিম্নলিখিত আউটপুট প্রিন্ট করে:

Node #1 at (...)px
 |-Node #2 at (...)px
   Role = 'Button'
   Text = '[Hello, World]'
   Actions = [OnClick, GetTextLayoutResult]
   MergeDescendants = 'true'

আনমার্জড ট্রি কি হবে তার একটি নোড মেলে আপনি useUnmergedTree true সেট করতে পারেন:

composeTestRule.onRoot(useUnmergedTree = true).printToLog("TAG")

এই কোড নিম্নলিখিত আউটপুট প্রিন্ট করে:

Node #1 at (...)px
 |-Node #2 at (...)px
   OnClick = '...'
   MergeDescendants = 'true'
    |-Node #3 at (...)px
    | Text = '[Hello]'
    |-Node #5 at (83.0, 86.0, 191.0, 135.0)px
      Text = '[World]'

useUnmergedTree প্যারামিটারটি সমস্ত অনুসন্ধানকারীতে উপলব্ধ। উদাহরণস্বরূপ, এখানে এটি একটি onNodeWithText ফাইন্ডারে ব্যবহার করা হয়েছে।

composeTestRule
    .onNodeWithText("World", useUnmergedTree = true).assertIsDisplayed()

দাবী

এক বা একাধিক ম্যাচারের সাথে একজন ফাইন্ডার দ্বারা ফিরে আসা SemanticsNodeInteractionassert() কল করে দাবী পরীক্ষা করুন:

// Single matcher:
composeTestRule
    .onNode(matcher)
    .assert(hasText("Button")) // hasText is a SemanticsMatcher

// Multiple matchers can use and / or
composeTestRule
    .onNode(matcher).assert(hasText("Button") or hasText("Button2"))

আপনি assertExists , assertIsDisplayed , এবং assertTextEquals এর মতো সবচেয়ে সাধারণ দাবিগুলির জন্য সুবিধার ফাংশনগুলিও ব্যবহার করতে পারেন। আপনি কম্পোজ টেস্টিং চিট শীটে সম্পূর্ণ তালিকা ব্রাউজ করতে পারেন।

নোডের সংগ্রহে দাবী পরীক্ষা করার ফাংশনও রয়েছে:

// Check number of matched nodes
composeTestRule
    .onAllNodesWithContentDescription("Beatle").assertCountEquals(4)
// At least one matches
composeTestRule
    .onAllNodesWithContentDescription("Beatle").assertAny(hasTestTag("Drummer"))
// All of them match
composeTestRule
    .onAllNodesWithContentDescription("Beatle").assertAll(hasClickAction())

কর্ম

একটি নোডে একটি ক্রিয়া ইনজেক্ট করতে, একটি perform…() ফাংশন কল করুন:

composeTestRule.onNode(...).performClick()

এখানে কর্মের কিছু উদাহরণ রয়েছে:

performClick(),
performSemanticsAction(key),
performKeyPress(keyEvent),
performGesture { swipeLeft() }

আপনি কম্পোজ টেস্টিং চিট শীটে সম্পূর্ণ তালিকা ব্রাউজ করতে পারেন।

ম্যাচার্স

আপনার রচনা কোড পরীক্ষা করার জন্য বিভিন্ন ম্যাচার উপলব্ধ।

অনুক্রমিক ম্যাচার্স

অনুক্রমিক ম্যাচার আপনাকে শব্দার্থবিদ্যা গাছের উপরে বা নিচে যেতে দেয় এবং ম্যাচিং করতে দেয়।

fun hasParent(matcher: SemanticsMatcher): SemanticsMatcher
fun hasAnySibling(matcher: SemanticsMatcher): SemanticsMatcher
fun hasAnyAncestor(matcher: SemanticsMatcher): SemanticsMatcher
fun hasAnyDescendant(matcher: SemanticsMatcher):  SemanticsMatcher

এখানে এই ম্যাচার্স ব্যবহার করা হচ্ছে কিছু উদাহরণ:

composeTestRule.onNode(hasParent(hasText("Button")))
    .assertIsDisplayed()

নির্বাচক

পরীক্ষা তৈরি করার একটি বিকল্প উপায় হল নির্বাচকদের ব্যবহার করা যা কিছু পরীক্ষাকে আরও পাঠযোগ্য করে তুলতে পারে।

composeTestRule.onNode(hasTestTag("Players"))
    .onChildren()
    .filter(hasClickAction())
    .assertCountEquals(4)
    .onFirst()
    .assert(hasText("John"))

আপনি কম্পোজ টেস্টিং চিট শীটে সম্পূর্ণ তালিকা ব্রাউজ করতে পারেন।

অতিরিক্ত সম্পদ