JUnit - Parametreli Test
JUnit 4 adlı yeni bir özellik tanıttı parameterized tests. Parametreli testler, bir geliştiricinin aynı testi farklı değerler kullanarak defalarca çalıştırmasına izin verir. Parametreli bir test oluşturmak için izlemeniz gereken beş adım vardır.
Test sınıfına @RunWith (Parameterized.class) ile açıklama ekleyin.
@Parameters ile açıklanmış, test veri kümesi olarak Nesnelerin Koleksiyonunu (Dizi olarak) döndüren genel bir statik yöntem oluşturun.
Test verilerinin bir "satırına" eşdeğer olanı alan genel bir kurucu oluşturun.
Test verilerinin her "sütunu" için bir örnek değişkeni oluşturun.
Test verilerinin kaynağı olarak örnek değişkenleri kullanarak test senaryolarınızı oluşturun.
Test senaryosu, her veri satırı için bir kez çağrılacaktır. Parametreli testleri iş başında görelim.
Bir Sınıf Oluşturun
Test edilecek bir java sınıfı oluşturun, diyelim ki, PrimeNumberChecker.java C: \> JUNIT_WORKSPACE konumunda.
public class PrimeNumberChecker {
public Boolean validate(final Integer primeNumber) {
for (int i = 2; i < (primeNumber / 2); i++) {
if (primeNumber % i == 0) {
return false;
}
}
return true;
}
}
Parametreli Test Durumu Sınıfı Oluşturun
Bir java test sınıfı oluşturun, diyelim ki PrimeNumberCheckerTest.java. Adlı bir java sınıf dosyası oluşturunPrimeNumberCheckerTest.java C: \> JUNIT_WORKSPACE konumunda.
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.Before;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import org.junit.runner.RunWith;
import static org.junit.Assert.assertEquals;
@RunWith(Parameterized.class)
public class PrimeNumberCheckerTest {
private Integer inputNumber;
private Boolean expectedResult;
private PrimeNumberChecker primeNumberChecker;
@Before
public void initialize() {
primeNumberChecker = new PrimeNumberChecker();
}
// Each parameter should be placed as an argument here
// Every time runner triggers, it will pass the arguments
// from parameters we defined in primeNumbers() method
public PrimeNumberCheckerTest(Integer inputNumber, Boolean expectedResult) {
this.inputNumber = inputNumber;
this.expectedResult = expectedResult;
}
@Parameterized.Parameters
public static Collection primeNumbers() {
return Arrays.asList(new Object[][] {
{ 2, true },
{ 6, false },
{ 19, true },
{ 22, false },
{ 23, true }
});
}
// This test will run 4 times since we have 5 parameters defined
@Test
public void testPrimeNumberChecker() {
System.out.println("Parameterized Number is : " + inputNumber);
assertEquals(expectedResult,
primeNumberChecker.validate(inputNumber));
}
}
Test Runner Sınıfı Oluşturun
Adlı bir java sınıf dosyası oluşturun TestRunner.java C: \> JUNIT_WORKSPACE içinde test olay (lar) ını yürütmek için.
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(PrimeNumberCheckerTest.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
Javac kullanarak PrimeNumberChecker, PrimeNumberCheckerTest ve Test Runner sınıflarını derleyin.
C:\JUNIT_WORKSPACE>javac PrimeNumberChecker.java PrimeNumberCheckerTest.java
TestRunner.java
Şimdi, sağlanan Test Senaryosu sınıfında tanımlanan test senaryolarını çalıştıracak Test Çalıştırıcısını çalıştırın.
C:\JUNIT_WORKSPACE>java TestRunner
Çıkışı doğrulayın.
Parameterized Number is : 2
Parameterized Number is : 6
Parameterized Number is : 19
Parameterized Number is : 22
Parameterized Number is : 23
true