Understanding semantics
In the previous section, I showed you a simple test case that checks if a button text matches a given string. Here is another test case. It performs a click on the button to see if the button text changes as expected:
@Test
fun testLetterAfterButtonClickIsB() {
rule.onNodeWithText("A")
.performClick()
.assert(hasText("B"))
}
Again, we start by finding the button. performClick() (this is called an action) clicks it. Assert(hasText("B")) checks if the button text is B afterward. Assertions determine if a test passes or fails.
onNodeWithText() (an extension function of SemanticsNodeInteractions Provider) returns a SemanticsNodeInteraction semantics node. The SemanticsNodeInteractionsProvider interface is the main entry point into testing and is typically implemented by a test rule. It defines two methods, as follows:
onNode()finds and returns a semantics...