0
0
JUnittesting~10 mins

Mutation testing concept (PIT) in JUnit - Test Execution Trace

Choose your learning style9 modes available
Test Overview

This test runs a simple JUnit test on a Calculator class to verify addition. Mutation testing with PIT will modify the code to check if the test detects errors, ensuring test quality.

Test Code - JUnit 5
JUnit
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;

class Calculator {
    int add(int a, int b) {
        return a + b;
    }
}

public class CalculatorTest {
    @Test
    void testAdd() {
        Calculator calc = new Calculator();
        assertEquals(5, calc.add(2, 3));
    }
}
Execution Trace - 9 Steps
StepActionSystem StateAssertionResult
1Test startsJUnit test runner initialized-PASS
2CalculatorTest.testAdd() method invokedCalculator instance created-PASS
3calc.add(2, 3) called, returns 5Method returns sum of 2 and 3-PASS
4assertEquals checks if returned value equals 5Expected=5, Actual=5assertEquals(5, 5)PASS
5Test completes successfullyTest passed-PASS
6PIT mutation testing runs, changes '+' to '-' in add methodCalculator.add method mutated to return a - b-PASS
7Mutated testAdd() runs, calc.add(2, 3) returns -1Method returns 2 - 3 = -1-FAIL
8assertEquals checks if returned value equals 5Expected=5, Actual=-1assertEquals(5, -1)FAIL
9Mutation detected by test failureTest failed due to mutation-PASS
Failure Scenario
Failing Condition: Test does not fail when mutation changes '+' to '-'
Execution Trace Quiz - 3 Questions
Test your understanding
What does the original test verify?
AThat subtracting 2 and 3 returns -1
BThat adding 2 and 3 returns 5
CThat multiplication works correctly
DThat the Calculator class exists
Key Result
Mutation testing helps check if your tests can catch small code changes that introduce errors, improving test quality.