Java
@ParameterizedTest
@ParameterizedTest ile parametreli testleri öğrenirsin.
@ParameterizedTest
Aynı testi farklı girdilerle çalıştırmak için @ParameterizedTest kullanılır. @ValueSource ile basit değer dizisi verirsin; her değer için test bir kez çalışır.
@ParameterizedTest
@ValueSource(ints = {1, 2, 3})
void testPositive(int number) {
assertTrue(number > 0);
}
Bu, aynı testi kopyalayıp yapıştırmaktan daha temizdir. Her girdi ayrı bir test olarak raporlanır; biri başarısız olursa diğerleri yine de çalışır. ints, strings, doubles gibi tipler kullanılabilir.
@CsvSource ile çoklu girdi
Birden fazla bağımsız değişken gerekiyorsa @CsvSource kullanılır. Her satır virgülle ayrılmış değerler içerir; bunlar test yöntemine parametre olarak geçer.
@ParameterizedTest
@CsvSource({"2, 3, 5", "4, 4, 8"})
void testAdd(int a, int b, int expected) {
assertEquals(expected, a + b);
}
Bu, tablo benzeri test verisi sağlar. Her satır ayrı bir senaryodur ve kendi sonucunu üretir. Karmaşık senaryolar için @MethodSource ile bir akış (Stream) döndüren fabrika yöntemi de kullanılabilir.
Uygulama Pozitif sayı testini parametreli yaz
Bir NumberTest sınıfı tanımla. @ParameterizedTest ve @ValueSource(ints = {1, 2, 3, 4}) ile işaretli testPositive yöntemi yaz; parametre int number olsun ve assertTrue(number > 0) çağrılsın. Bir main metodu ekle; 1, 2 ve 3 değerlerini döngüde denetle ve kaçının pozitif olduğunu System.out.println ile yazdır.
Örnek çözümü göster
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import static org.junit.jupiter.api.Assertions.*;
class NumberTest {
@ParameterizedTest
@ValueSource(ints = {1, 2, 3, 4})
void testPositive(int number) {
assertTrue(number > 0);
}
public static void main(String[] args) {
int count = 0;
for (int n : new int[]{1, 2, 3}) {
if (n > 0) count++;
}
System.out.println(count);
}
}
Kendini test et
-
@ParameterizedTest ile hangi annotation birlikte kullanılır?
- @Test
- @ValueSource
- @BeforeEach
- @DisplayName
Cevabı göster
@ValueSource — @ValueSource ile girdi değerleri sağlanır.
-
Kaynak annotation'larını eşleştir
- @ValueSource
- Tek tip basit dizi
- @CsvSource
- Virgülle ayrılmış satırlar
- @MethodSource
- Akış döndüren fabrika
- @EnumSource
- Enum değerleri
-
ValueSource çağrısını tamamla
@ParameterizedTest
@____(strings = {"a", "b"})
void testLetter(String s) {
assertNotNull(s);
}
Cevabı göster
@ParameterizedTest
@ValueSource(strings = {"a", "b"})
void testLetter(String s) {
assertNotNull(s);
}
Sıradaki ders: @DisplayName