.NET Core ile Yazılan Testlerin Coverage Raporlarının Oluşturulması

Mennan Köse
3 min readSep 3, 2019

--

Code Coverage, yazılmış olan testin kodunuzun ne kadarını kapsadığını belirten bir ölçümdür. Bu ölçüm sayesinde kodunuzda testi yazılmamış kısımlar bulunuyorsa analizini yaparak ilgili satırların veya bölümlerinin testini yazmaya karar verebilirsiniz. Mümkün olduğunca code coverage yüzdesinin yüksek olmasına önem verilmelidir.

.NET Core’da dahili olarak code coverage raporunu oluşturabilecek bir araç bulunmamaktadır. Code coverage raporunu oluşturabilmek için Coverlet isimli kütüphaneden yararlanacağız.

Örnek projemizi yapmaya başlayabiliriz. Aşağıdaki komutları terminalimize yazarak sırasıyla solution, console ve test projelerimizi oluşturuyoruz.

Komutları yazdıktan sonra projemizi kullanmış olduğumuz IDE veya metin editörü ile açalım. Aşağıdaki ekran görüntüsündeki gibi bir proje yapımızın olması gerekmektedir.

Şimdi testimizi yazacağımız sınıfı yazmaya bağlayabiliriz. Console projemize Calculator isminde bir sınıf ekleyelim ve içeriğini aşağıdaki şekilde değiştirelim.

Yazmış olduğumuz sınıf basit bir şekilde toplama, çıkarma, çarpma ve bölme işlemlerini gerçekleştiren 4 metoda sahip.

Şimdi sırada bu sınıfa ait testimizi yazalım. Test projemiz altında bulunan UnitTest1.cs dosyamızın ismini CalculatorTests.cs olarak değiştirelim ve içeriği aşağıdaki şekilde düzenleyelim.

Yukarıdaki sınıfta Calculator sınıfına ait 4 metodun testini yazdık. Aşağıdaki komutu yazarak testlerimizin çalışıp çalışmadığını kontrol edelim.

dotnet test

Görüldüğü üzere testlerimiz başarıyla çalıştı. Şimdi sırada yazdığımız testin kodumuzun ne kadarını kapsadığının raporu çıkarmaya geldi.

Raporu oluşturabilmek için Coverlet’ın paketini test projemize eklemimiz gerekmektedir. Paketi ekleyebilmek için aşağıdaki komutu terminalimizde çalıştırıyoruz.

Paket ekleme işlemlerini hallettikten sonra sadece testimizi çalıştırıp code coverage raporuna ulaşmak kaldı. İlgili rapora ulaşmak için aşağıdaki komutu terminalde çalıştırmamız yeterlidir.

Komutu çalıştırdıktan sonra yukarıdaki gibi bir ekranla karşılaşağız. Bu raporda testimizin kodumuzun %76.47'sinin kapsadığını görebilmekteyiz. Aynı zamanda test projemizin ana dizininde coverage.json isminde bir dosya oluşmaktadır. Bu dosyanın içerisinde de raporla ilgili bilgiler bulunmaktadır.

Peki code coverage raporlarımızı SonarQube gibi kod analizi araçlarının anlayacağı şekilde nasıl oluşturabiliriz? Bunun cevabı ise LCOV dosya formatında yatmakta. SonarQube LCOV dosya yapısındaki raporları analiz edebilektedir. Coverlet kütüphanesi ise LCOV formatında rapor çıktısı verebilmektedir. LCOV formatında rapor alabilmek için aşağıdaki komutu çalıştırmamız yeterlidir.

Yukarıda da gördüğünüz gibi test projemizin ana dizininde lcov.info isminde bir dosya oluştu. Bu dosyayı SonarQube’e analiz aşamasında verdiğiniz takdirde code coverage bilgileriniz SonarQube üzerinde gözükecektir.

Örnek uygulamaya ait kaynak kodlara https://github.com/mennan/netcore-codecoverage-sample adresinden ulaşabilirsiniz.

Originally published at https://mennankose.com on September 3, 2019.

--

--