İçeriğe geç

TestNG ile Log4j Kullanımı

TestNG, testlerin yürütülmesini kontrol ederken, Log4j ise test çıktılarının anlamlı ve yönetilebilir loglara dönüştürülmesini sağlar.
Bu entegrasyon sayesinde:

  • Hataların takibi kolaylaşır
  • Test süreci boyunca neler olduğunu adım adım görebilirsiniz
  • Konsol çıktısı yerine dosyaya log alabilirsiniz

Log4j, Apache tarafından geliştirilen güçlü bir loglama (kayıt tutma) aracıdır.
Java uygulamalarında yaygın olarak kullanılır ve test otomasyon projelerinde özellikle hata analizi için çok değerlidir.


🧩 TestNG ile Log4j Entegrasyonu Adımları

Section titled “🧩 TestNG ile Log4j Entegrasyonu Adımları”

Eğer Maven kullanıyorsan, pom.xml içine aşağıdaki bağımlılığı ekle:

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

💡 Alternatif olarak Log4j2 kullanmak istersen:

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.22.0</version>
</dependency>

2️⃣ log4j.properties Dosyası Oluştur

Section titled “2️⃣ log4j.properties Dosyası Oluştur”

Kaynak klasörüne (src/test/resources) şu dosyayı ekle:

log4j.properties
log4j.rootLogger=INFO, FILE, CONSOLE
# Konsola loglama
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{HH:mm:ss} [%t] %-5p %c - %m%n
# Dosyaya loglama
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=logs/test-log.log
log4j.appender.FILE.Append=true
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

3️⃣ Test Sınıfında Log4j Kullanımı

Section titled “3️⃣ Test Sınıfında Log4j Kullanımı”
import org.testng.annotations.Test;
import org.apache.log4j.Logger;
public class Log4jExampleTest {
private static final Logger logger = Logger.getLogger(Log4jExampleTest.class);
@Test
public void loginTest() {
logger.info("Test başlatılıyor: loginTest");
try {
logger.debug("Kullanıcı adı giriliyor");
logger.debug("Şifre giriliyor");
logger.info("Login butonuna tıklanıyor");
int result = 10 / 0;
} catch (Exception e) {
logger.error("Bir hata oluştu: " + e.getMessage());
}
logger.info("Test tamamlandı: loginTest");
}
}

SeviyeAçıklama
TRACEEn detaylı log. Genelde debug için.
DEBUGGeliştirici adımlarını gösterir.
INFOGenel test akışı bilgisini verir.
WARNPotansiyel problem uyarısı.
ERRORHata durumları.
FATALKritik hata, genelde testin durduğu an.

10:45:31 [main] INFO Log4jExampleTest - Test başlatılıyor: loginTest
10:45:31 [main] DEBUG Log4jExampleTest - Kullanıcı adı giriliyor
10:45:31 [main] DEBUG Log4jExampleTest - Şifre giriliyor
10:45:31 [main] INFO Log4jExampleTest - Login butonuna tıklanıyor
10:45:31 [main] ERROR Log4jExampleTest - Bir hata oluştu: / by zero
10:45:31 [main] INFO Log4jExampleTest - Test tamamlandı: loginTest

TestNG ve Log4j birlikte kullanıldığında:

  • Hatalar kolay analiz edilir
  • Raporlama daha anlamlı hale gelir
  • Test çıktısı hem konsolda hem dosyada tutulur

Bu yapı, özellikle büyük çaplı test otomasyon projelerinde güvenilir loglama için önerilen standarttır.


/src
├── /test
│ ├── /java
│ │ └── tests
│ │ └── Log4jExampleTest.java
│ └── /resources
│ └── log4j.properties
└── pom.xml
/logs
└── test-log.log