Welcome

Kotlin ve Mockito (2)

Kotlin ve Mockito yazı dizimizin ilkinde Kotlin içerisinde Mockito ile mock nesneler oluştururken veya nesnelerimizi spy yaparken Kotlin sınıflarımızın open olması gerektiğinden bahsetmiştik. Kotlinde Mockito kütüphanesi ile çalışırken karşılaşacağımız en temel sorunlardan bir diğeri ise Mockito.any() veya ArgumentCaptor.capture() gibi metotların NULL döndürmesidir. Eğer mock nesnemizde input argüman olarak NULL olmayan bir değer bekleyen herhangi bir […]

Mockito’da Mock ve Spy Nesnelerin Eğitilmesi

Bir önceki yazımızda Mockito kütüphanesinin Kotlin projelerinde kullanılması üzerinde durmuştuk. Bu konuya devam edeceğiz. Ancak bu yazımızda Kotlin özelinden çıkıp Mockito’nun kullanımı ile ilgili daha genel bir konudan bahsetmek istiyorum. Bilgidiğiniz üzere, Mockito kütüphanesi, mock ve spy nesnelerin hedef metotlarının eğitilmesi için iki farklı kullanım biçimi sunmaktadır. Bunlardan ilki, daha sık kullanılan aşağıdaki; “when method […]

Kotlin ve Mockito

TDD ile programlama yapan Java yazılım geliştiricilerin en temel araçlarından birisi de Mockito mock kütüphanesidir. Mockito yardımı ile arayüz ve sınıflardan mock ve stub nesneler oluşturarak, bunları eğittikten sonra test ettiğimiz nesneye enjekte ederek birim testlerimizi gerçekleştiririz. İlk iki yazımızdan sonra Kotlin ile geliştirilen yazılım projelerinde Mockito kütüphanesi ile çalışırken karşılaştığımız en temel problemi sanırım […]

Weird Rollback Behavior of Spring TestContext Framework

One of the nice features of TestContext module of Spring Application Framework is its ability to run unit tests within a transaction context. By that way, you are able to both execute your persistence operations which usually expect an active transaction to run, and also rollback state changes occur during execution of these persistence operations […]

MockFactoryBean

Diyelim ki Spring application context dosyalarından birini yükleyerek entegrasyon birim testi gerçekleştirmek istiyorsunuz. Ancak yüklediğiniz application context içerisindeki bean tanımlarından birisi başka bir application context içinde tanımlı bir bean’a ihtiyaç duyuyor, bu bean’da diğer bir application context dosyasındaki başka bir bean’a ihyiyaç duyuyor ve bu böyle gidiyor… Anlayacağınız entegrasyon birim testi yapacağım derken neredeyse bütün […]

Mockito ile Null Object

Dün bir iş arkadaşımla bir monitoring kabiliyeti üzerinde çalışırken, kendisinin “Null Object” örüntüsünü kullandığını gördüm. Hepimizin bildiği üzere Null Object örüntüsü bizim kod içerisinde null referans ile karşılaşabilecek kısımların öncelikle null kontrolü yapma gereksinimini ortadan kaldırmaya çalışıyor. Herhangi bir metod null döndürmek yerine return tipini implement eden veya ondan türeyen, ancak içerisinde herhangi bir davranış […]

JSFUnit ve Jetty ile WicketTester Ouşturma Deneyimleri

Geçenlerde JSFUnit’i değişikliğe uğratarak WicketTester benzeri bir test altyapısı kurmaya çalıştım. WicketTester, istemci çağrılarını tek bir noktada ele alıyor. JSFUnit, HtmlUnit, Selenium gibi istemci- sunucu iletişimi söz konusu olmuyor. Ancak JSFUnit in-container test framework. Bu nedenle uygulamanın testlerle birlikte sunucuya deploy edilmesini ve sunucunun çalıştırılmasını bekliyor. HtmlUnit vasıtası ile sunucu tarafında uygulamaya request’ler göndererek JSFSession […]

Integrating JSFUnit To Your Project

Actually I am not a big fun of in-container unit testing approaches. They have longer execution times, e.g. container and database startup, intialization times etc. In addition, they create configuration complexity in terms of packaging of tests and deployment of application together with them. Anyway, recently I needed to examine JSFUnit solution more closely for […]

Spring ve Test Driven Programlama

Bir önceki yazımda Spring Framework’ün test driven yazılım geliştirmeye ciddi katkılarının olduğunu ifade etmiştim. Bu 3 temel nedene dayanıyor; Spring’de “Program to interface” yaklaşımına uygun kod geliştirmenin desteklenmesi Monolitik uygulama sunucularından bağımsız çalışabilen “lightweight IoC container” Framework’ün sunduklarından istifade edebilmek için sıradan Java nesnelerinin (POJO) yeterli olması Şayet uygulama içerisindeki bağımlılıklarımız sadece interface’lere olursa, kodlama […]