Bird
Raised Fist0
Android Kotlinmobile~10 mins

Unit testing with JUnit in Android Kotlin - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a basic JUnit test function in Kotlin.

Android Kotlin
import org.junit.Test
import org.junit.Assert.*

class CalculatorTest {
  @Test
  fun testAddition() {
    val result = 2 + 3
    assertEquals(5, result[1])
  }
}
Drag options to blanks, or click blank then click option'
A)
B]
C}
D;
Attempts:
3 left
💡 Hint
Common Mistakes
Using a bracket or brace instead of a parenthesis to close the function call.
Adding a semicolon which is not needed in Kotlin.
2fill in blank
medium

Complete the code to import the JUnit Assert class correctly.

Android Kotlin
import org.junit.[1].*
Drag options to blanks, or click blank then click option'
AAssert
BTest
CAssertions
DRule
Attempts:
3 left
💡 Hint
Common Mistakes
Importing Test instead of Assert, which only provides the @Test annotation.
Using Assertions which is from JUnit 5, but here we use JUnit 4 style.
3fill in blank
hard

Fix the error in the test function annotation to make it a valid JUnit test.

Android Kotlin
class SampleTest {
  @[1]
  fun sampleTest() {
    assertTrue(true)
  }
}
Drag options to blanks, or click blank then click option'
ATestCase
Btest
CTest
DTestFunction
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase @test which is not recognized by JUnit.
Using @TestCase or @TestFunction which do not exist.
4fill in blank
hard

Complete the code to write an assertion that checks if two strings are equal.

Android Kotlin
class StringTest {
  @Test
  fun testStrings() {
    val expected = "hello"
    val actual = "hello"
    assert[1](expected, actual)
  }
}
Drag options to blanks, or click blank then click option'
AEquals
BEqualsIgnoreCase
C)
D]
Attempts:
3 left
💡 Hint
Common Mistakes
Using assertEqualsIgnoreCase which does not exist in JUnit.
Closing the call with a bracket instead of a parenthesis.
5fill in blank
hard

Fill all three blanks to write a test that checks if a list contains a specific element.

Android Kotlin
class ListTest {
  @Test
  fun testContains() {
    val items = listOf("apple", "banana", "cherry")
    assertTrue(items.[1]("banana") [2] [3])
  }
}
Drag options to blanks, or click blank then click option'
Acontains
B==
Ctrue
Dequals
Attempts:
3 left
💡 Hint
Common Mistakes
Using equals instead of contains to check list membership.
Not comparing the result to true, which is needed for assertTrue.

Practice

(1/5)
1. What is the main purpose of a unit test in Android Kotlin development using JUnit?
easy
A. To deploy the app to the Play Store
B. To test the entire application UI
C. To check if a small part of code works correctly
D. To measure app performance under load

Solution

  1. Step 1: Understand unit test scope

    Unit tests focus on small, isolated parts of code, like functions or classes.
  2. Step 2: Differentiate from other tests

    UI tests and performance tests cover broader areas, not unit tests.
  3. Final Answer:

    To check if a small part of code works correctly -> Option C
  4. Quick Check:

    Unit test = small code check [OK]
Hint: Unit tests check small code parts only [OK]
Common Mistakes:
  • Confusing unit tests with UI or integration tests
  • Thinking unit tests deploy or measure performance
  • Assuming unit tests cover the whole app
2. Which annotation is used in Kotlin with JUnit to mark a function as a test?
easy
A. @Test
B. @Before
C. @RunWith
D. @Ignore

Solution

  1. Step 1: Identify JUnit test annotation

    The @Test annotation marks a function as a test method in JUnit.
  2. Step 2: Understand other annotations

    @Before runs setup code, @RunWith specifies runner, @Ignore skips tests.
  3. Final Answer:

    @Test -> Option A
  4. Quick Check:

    @Test marks test functions [OK]
Hint: Use @Test to mark test functions [OK]
Common Mistakes:
  • Using @Before instead of @Test for tests
  • Confusing @RunWith with test marking
  • Mistaking @Ignore as test annotation
3. Given this Kotlin JUnit test code, what will be the test result?
import org.junit.Test
import kotlin.test.assertEquals

class CalculatorTest {
    @Test
    fun testAdd() {
        val result = 2 + 3
        assertEquals(5, result)
    }
}
medium
A. Test passes successfully
B. Test fails with assertion error
C. Compilation error due to missing import
D. Runtime exception occurs

Solution

  1. Step 1: Analyze the test logic

    The test adds 2 + 3 and stores in result, which equals 5.
  2. Step 2: Check assertion correctness

    assertEquals expects 5 and result is 5, so assertion passes.
  3. Final Answer:

    Test passes successfully -> Option A
  4. Quick Check:

    2 + 3 = 5 matches assertEquals [OK]
Hint: Check if expected equals actual in assertEquals [OK]
Common Mistakes:
  • Assuming test fails when values match
  • Thinking imports are missing when they are correct
  • Confusing runtime errors with assertion failures
4. Identify the error in this Kotlin JUnit test code:
import org.junit.Test
import kotlin.test.assertEquals

class CalculatorTest {
    @Test
    fun testSubtract() {
        val result = 5 - 2
        assertEquals(4, result)
    }
}
medium
A. Function name should start with 'test_'
B. Missing @Test annotation
C. Incorrect import statement
D. Wrong expected value in assertEquals

Solution

  1. Step 1: Calculate the actual result

    5 - 2 equals 3, but expected value is 4 in assertEquals.
  2. Step 2: Check annotations and imports

    @Test annotation and imports are correct; function name style is not enforced.
  3. Final Answer:

    Wrong expected value in assertEquals -> Option D
  4. Quick Check:

    5 - 2 = 3, expected 4 causes failure [OK]
Hint: Verify expected matches actual in assertions [OK]
Common Mistakes:
  • Ignoring mismatch between expected and actual values
  • Thinking function names must start with 'test_'
  • Assuming missing annotations when present
5. You want to test a Kotlin function that returns null for invalid input. Which assertion correctly checks this behavior in JUnit?
hard
A. assertEquals(null, functionResult)
B. assertNull(functionResult)
C. assertTrue(functionResult == null)
D. assertNotNull(functionResult)

Solution

  1. Step 1: Understand null checking assertions

    assertNull explicitly checks if a value is null, making tests clear and readable.
  2. Step 2: Compare other options

    assertEquals(null, ...) works but is less clear; assertTrue(...) works but less direct; assertNotNull is opposite.
  3. Final Answer:

    assertNull(functionResult) -> Option B
  4. Quick Check:

    Use assertNull to check null values [OK]
Hint: Use assertNull to check if value is null [OK]
Common Mistakes:
  • Using assertNotNull when expecting null
  • Using assertEquals(null, ...) instead of assertNull
  • Using assertTrue with complex conditions unnecessarily
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard