Skip to main content

Looping Test

JUnit mendukung eksekusi unit test berulang kali sesuai dengan jumlah yang kita tentukan. Untuk mengulang eksekusi unit test, kita bisa menggunakan annotation @RepeatedTest di method unit test nya. @RepeatedTest juga bisa digunakan untuk mengubah detail nama test nya, dan kita bisa menggunakan value {displayName} untuk mendapatkan display name, {currentRepetition} untuk mendapatkan perulangan ke berapa saat ini, dan {totalRepetitions} untuk mendapatkan total perulangan nya.

// REPEAT TEST sebanyak 20 kali
@DisplayName("Test Calculator Repeat")
@RepeatedTest(
value = 20,
name = "{displayName} ke {currentRepetition} dari {totalRepetitions}"
)
void testRepeatRandom(Random random) {
int a = random.nextInt();
int b = random.nextInt();

var result = calculator.add(a, b);
var expect = a + b;

Assertions.assertEquals(expect, result);
}

Informasi Perulangan

@RepeatedTest juga memiliki object RepetitionInfo yang di inject oleh class RepetitionInfoParameterResolver, sehingga kita bisa mendapatkan informasi RepetitionInfo melalui parameter function unit test.

@DisplayName("Test Calculator Repeat with info")
@RepeatedTest(
value = 20,
name = "{displayName}"
)
void testRepeatInfoRandom(TestInfo testInfo, Random random, RepetitionInfo repetitionInfo) {
System.out.println(
testInfo.getDisplayName() + " ke " +
repetitionInfo.getCurrentRepetition() + " dari " +
repetitionInfo.getTotalRepetitions());
int a = random.nextInt();
int b = random.nextInt();

var result = calculator.add(a, b);
var expect = a + b;

Assertions.assertEquals(expect, result);
}