Bird
Raised Fist0
JUnittesting~10 mins

Mutation testing concept (PIT) in JUnit - Interactive Code Practice

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

Complete the code to run a basic PIT mutation test with JUnit.

JUnit
MutationCoverage coverage = new MutationCoverageBuilder().withTestPlugin("[1]")
Drag options to blanks, or click blank then click option'
Amockito
Btestng
Cspock
Djunit
Attempts:
3 left
💡 Hint
Common Mistakes
Using a plugin name for a different testing framework like TestNG or Spock.
2fill in blank
medium

Complete the code to specify the target classes for mutation testing.

JUnit
PitStrategy strategy = new PitStrategy().withTargetClasses("[1]")
Drag options to blanks, or click blank then click option'
Acom.example.*
Bcom.pit.*
Cjava.util.*
Dorg.junit.*
Attempts:
3 left
💡 Hint
Common Mistakes
Targeting external libraries like JUnit or Java standard packages.
3fill in blank
hard

Fix the error in the PIT configuration code to correctly set the mutators.

JUnit
PitStrategy strategy = new PitStrategy().withMutators("[1]")
Drag options to blanks, or click blank then click option'
Adefault
Ball
CDEFAULTS
Dmutate
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase or incorrect mutator names causes configuration errors.
4fill in blank
hard

Fill both blanks to configure PIT to exclude test classes and set the output format.

JUnit
PitStrategy strategy = new PitStrategy().withExcludedClasses("[1]*").withOutputFormats("[2]")
Drag options to blanks, or click blank then click option'
ATest
BHTML
CSpec
DXML
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong patterns for exclusion or unsupported output formats.
5fill in blank
hard

Fill all three blanks to create a mutation test run with PIT using JUnit, targeting your package, and setting mutators.

JUnit
PitStrategy strategy = new PitStrategy().withTestPlugin("[1]")
.withTargetClasses("[2]*")
.withMutators("[3]")
Drag options to blanks, or click blank then click option'
Ajunit
Bcom.myapp
CDEFAULTS
Dtestng
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing test plugins or using incorrect package names or mutator sets.

Practice

(1/5)
1. What is the main purpose of mutation testing using PIT in JUnit projects?
easy
A. To check if tests can detect small changes (mutations) in the code
B. To improve the performance of the application
C. To generate new test cases automatically
D. To refactor the code for better readability

Solution

  1. Step 1: Understand mutation testing concept

    Mutation testing changes code slightly to see if tests catch the changes.
  2. Step 2: Identify PIT's role in JUnit projects

    PIT automates mutation testing to check test effectiveness.
  3. Final Answer:

    To check if tests can detect small changes (mutations) in the code -> Option A
  4. Quick Check:

    Mutation testing = detect code changes [OK]
Hint: Mutation testing checks test strength by code changes [OK]
Common Mistakes:
  • Thinking mutation testing improves app speed
  • Confusing mutation testing with test generation
  • Assuming mutation testing refactors code
2. Which of the following is the correct way to run PIT mutation testing with Maven in a JUnit project?
easy
A. mvn test:pitest
B. mvn pitest:mutationCoverage
C. mvn mutation:test
D. mvn pit:run

Solution

  1. Step 1: Recall PIT Maven command

    The standard Maven command to run PIT is mvn pitest:mutationCoverage.
  2. Step 2: Check other options for correctness

    Other options are invalid or do not match PIT's official command syntax.
  3. Final Answer:

    mvn pitest:mutationCoverage -> Option B
  4. Quick Check:

    PIT Maven command = mvn pitest:mutationCoverage [OK]
Hint: PIT Maven command always starts with 'mvn pitest:' [OK]
Common Mistakes:
  • Using incorrect Maven goals like test:pitest
  • Confusing PIT commands with other plugins
  • Missing the 'mutationCoverage' goal
3. Given the following code snippet and its test, what will PIT report if the test does NOT fail after mutation?
public int add(int a, int b) { return a + b; }

Mutation changes '+' to '-'. The test asserts add(2,3) == 5.
medium
A. Mutation killed (test failed)
B. Syntax error in mutation
C. Mutation survived (test passed)
D. Test skipped due to mutation

Solution

  1. Step 1: Understand mutation effect

    The '+' operator is changed to '-', so add(2,3) returns -1 instead of 5.
  2. Step 2: Analyze test result

    If the test still passes, it means it did not detect the mutation, so mutation survived.
  3. Final Answer:

    Mutation survived (test passed) -> Option C
  4. Quick Check:

    Mutation survived = test missed bug [OK]
Hint: If test passes despite mutation, mutation survived [OK]
Common Mistakes:
  • Assuming mutation killed when test passes
  • Confusing mutation survival with syntax errors
  • Thinking mutation causes test to skip
4. You run PIT on a JUnit project but notice no mutations are detected. Which of the following is the MOST likely cause?
medium
A. Tests are missing or not executed during mutation testing
B. PIT does not support JUnit tests
C. Mutation testing always reports zero mutations
D. Code has no executable statements

Solution

  1. Step 1: Consider PIT and JUnit compatibility

    PIT supports JUnit tests, so PIT does not support JUnit tests is incorrect.
  2. Step 2: Analyze why no mutations detected

    If tests are missing or not run, PIT cannot detect mutations, causing zero mutations reported.
  3. Final Answer:

    Tests are missing or not executed during mutation testing -> Option A
  4. Quick Check:

    No tests run = no mutations detected [OK]
Hint: No tests run means no mutation detection [OK]
Common Mistakes:
  • Believing PIT doesn't support JUnit
  • Thinking mutation testing always reports mutations
  • Assuming code has no executable statements
5. In a JUnit project using PIT, you notice that mutation coverage is low even though your tests pass. What is the BEST way to improve mutation coverage?
hard
A. Ignore mutation coverage and focus on code coverage
B. Increase the number of mutations PIT generates
C. Disable mutation testing for complex classes
D. Add more tests that fail when code is mutated

Solution

  1. Step 1: Understand mutation coverage meaning

    Low mutation coverage means tests do not fail when code is changed (mutated).
  2. Step 2: Identify how to improve mutation coverage

    Adding tests that detect mutations (fail on changes) improves mutation coverage.
  3. Final Answer:

    Add more tests that fail when code is mutated -> Option D
  4. Quick Check:

    Better tests = higher mutation coverage [OK]
Hint: Stronger tests catch mutations, raising coverage [OK]
Common Mistakes:
  • Trying to increase mutations instead of test quality
  • Disabling mutation testing to hide low coverage
  • Ignoring mutation coverage in favor of code coverage only
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