Spring Test - Integration Testing with TestRestTemplate

Spring Test provides have few options to test our controllers. So in this post let’s take a look to how to test controllers with TestRestTemplate. These tests are run as an integration tests. In that kind of tests are no difference what are our application doing on production(ignoring other system components proxy servers, load-balancing etc.). These kind of tests are suitable to test any HTTP related problems. You also have more argument when some of your client/friend come to your table and blame you that your endpoints are not working.

Spring Test - Web Layer Testing with MockMvcTest

How are you testing your Controllers? Are you ignore unit tests for them? Or you just write some time consuming, heavyweight integration tests. Let’s take a look to MockMvcTest.

How a Good Programmer Perform Better in a Slow Computer

Nowadays I am reading Thomas Colmen’s book, Algorithms Unlocked. I like one example in it which demostrate that how good programmer perform better in a slow computer.

Spring Propagation Tutorial

Spring Transaction Management uygulama için basit ve yönetilebilir bir uygulama çatısı sunar. Java Transaction yönetimi JTA(Java Transaction API),JDBC(Java Database Connectivity),JPA(Java Persistence APİ), JDO(Java Data Objects) gibi standartlar altında toplanmıştır.

Wirecard Interview

Wirecard Almanya merkezli ödeme sistemleri üzerine çalışan bir şirket. Bir süre önce İngiliz head hunter şirketi aracılığı ile bu şirketle bir görüşme yaptım. Öncesinde benzer bir süreci Pay on şirketi ile yaşamıştım ancak o görüşmede codility sınavını geçemedim. Wirecard şu an çalıştığım ürüne benzer ürünler geliştiren bir firma. Süreç head hunter şirketinin CV’mi wirecard’a iletmesi ile başladı. CV’mi bu head hunter sitesine bir arkadaşım vasıtası ile verdim. Öncesinde head hunter şirketi ile bir görüşme yaptım. Genel olarak Cv’nizde yazanlar ile sizi tanımaya çalışıyorlar. Ardından Wirecard’dan insan kaynaklarından biri ile telefonda görüştüm. Bu görüşmem yaklaşık 20 dakika sürdü. Münih’te java yazılım geliştirici arayışları olduğunu ve beni ilgili takımlardan birine düşündüklerini belirtti. Ardından kendilerinden bir mail aldım. Zıp dosyası içinde undo_manager adında bir proje gönderdiler. Proje 8-10 sınıftan oluşan ve arayüzleri yazılmış uygulama sınıfları ise boş bırakılmış bir geri alma yönetim programıydı. Ben 3-4 sınıfın uygulama(implementation class) sınıflarını yazmamı çalıştıklarından emin olmamı, sonuçta çalışan değil ama çalışabilecek bir kod üretmemi istediler ve 4-5 günlük haftasonunu da kapsayan bir zaman verdiler. Uygulamayı istedikleri şekilde undo ve redo adımları için ArrayList(undoList) ve Stack(redoList) kullanarak tamamladım.Mockito ve Junit kullanarak 10-15 tane de unit test yazdım. Projeyi istenilen tarihten birgün öncesinde gönderdim. Yaklaşık bir hafta sonra geri döndüler ve 4 gün sonra bir video görüşme talep ettiler. Görüşmenin teknik bir görüşme olacağını ve görüşmeyi yapacağım kişinin bilgilerini paylaştılar. Görüşmeyi gotoMeeting üzerinden ayarlamışlardı. Görüşmede karşı tarafta iki kişi vardı, ancak sadece öncesinde bana bilgileri verilen gelsitirici sorular sordu. Mülakatın başında kendimi tanıtmamı ardından şu anki isimde neler yaptığımı sordular. Sonrasında http://çollabedit.com/ üzerinden bir java sınıfı paylaştılar. Doküman üzerinde yaptığınız değişikleri karşı tarafın görmesini sağlayan bir araç collabedit. Kod Person sınıfı kodu içeren, içinde temel toString, equals metodları barındıran. String name, Date birthdate, Person Father, Person Mother gibi alt alanları olan bir java sınıfıydı. Kodu incelememi ve kod üzerinde gördüğüm hata ve eksikleri söylememi istediler. equals metodunun gerçekleştirimi eksikti. Complexity olan yerler vardı. printStackTrace ile kritik verinin cataina.out a yazılabileceği gibi şeyler söyledim. Ardından kendileri metod metod sorular sorarak ilerlediler. Bu kısım yarım saatten fazla sürdü. Ardından yine çollabedit üzerinden bir senaryo paylaştılar buna göre Person adında bir tablo var ve bu tablonun phone alanı öncesinde free format olarak telefon numaraları kabul etmiş. Sonuçta alanda şöyle değerler var