Örnek

JUnit 5 ile TemporaryFolder Kullanımı

JUnit 5'de rule desteği kaldırılmıştır. TemporaryFolder gibi bazı ön tanımlı rule'lar da JUnit 5 kütüphanesinde artık bulunmamaktadır. Ancak 5.4.2 sürümünden sonra @TempDir şeklinde Temporary Folder desteği gelmiştir. 5.4.2 öncesi TemporaryFolder işlevini sağlamak için TemporaryFolder uzantısı (extention) yaratmanız gerekir. Veya junit-extensions projesini kullanabilirsiniz. Bu github.com/glytching/junit-extensions ve glytching.github.io/junit-extensions/index bağlantılarına bakabilirsiniz.
Öncelikle projeye bağımlılıkları aşağıdaki gibi ekleyebiliriz:
<dependency>
	<groupId>org.junit.jupiter</groupId>
	<artifactId>junit-jupiter-engine</artifactId>
	<version>5.4.0-M1</version>
	<scope>test</scope>
</dependency>
<dependency>
	<groupId>io.github.glytching</groupId>
	<artifactId>junit-extensions</artifactId>
	<version>2.3.0</version>
	<scope>test</scope>
</dependency>
Öncelikle test edilecek bir sınıf yazalım. Bu sınıf bir properties dosyasını yükleyen bir sınıf olsun:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class PropertiesLoader {
	private Properties properties=null;
	public void load(String path) 
			throws FileNotFoundException, IOException {		
		properties=new Properties();
		try(InputStream is=new FileInputStream(path)){
			properties.load(is);
		}		
	}	
	public String getProperty(String key) {
		return properties.getProperty(key);
	}	
}
Bu sınıfı test etmek için TemporaryFolderExtension'ı kullanan bir test sınıfı aşağıdaki gibi yaratılabilir:
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import io.github.glytching.junit.extension.folder.TemporaryFolder;
import io.github.glytching.junit.extension.folder.TemporaryFolderExtension;
@ExtendWith(TemporaryFolderExtension.class)
public class PropertiesLoaderTest {
   private static File file;
    @BeforeAll
    public static void prepare(TemporaryFolder givenTemporaryFolder) throws IOException {   	
		file = givenTemporaryFolder.createFile("test.properties");
		
		Properties properties=new Properties();
		properties.put("test", "testvalue");
		
		try(OutputStream os =new FileOutputStream(file)){
			properties.store(os,"test properties");
		}		
    }
	@Test
	@ExtendWith(TemporaryFolderExtension.class)
	public void loadTest() throws IOException {
		
		PropertiesLoader loader=new PropertiesLoader();
		loader.load(file.getAbsolutePath());
		
		assertEquals("testvalue", loader.getProperty("test"));
	}
}
Sınıfın en üstünde @ExtendWith(TemporaryFolderExtension.class) ile TemporaryFolderExtension'ı kullanacağımız belirtiyoruz. @BeforeAll ile tanımlanan yöntem ile TemporaryFolder'ı alıyoruz ve bir properties dosyasını yaratıyoruz. loadTest() yönteminde ise asıl test edeceğimiz PropertiesLoader sınıfını yaratıyoruz ve verilen path'deki properties dosyasını yükletiyoruz. Eğer test değeri testvalue ise PropertiesLoader başarılı bir şekilde çalışmış demektir.
JUnit 5, 5.4.2 sonrası için herhangi bir extention kütüphanesi kullanmadan "@TempDir Path path" şeklinde test yöntemlerine aktarılabilirsiniz:
@Test
public void createFileTest(@TempDir Path tempDir) {
	
	String testFilePath=tempDir.toString()+File.separator+"test.txt";
	
	try {
		Files.createFile(Paths.get(testFilePath));
	} catch (IOException e) {
		fail(e);
	}
	
	//...
}
zafer.teker , 10.06.2022

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir

Misafir Yorumları




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir