PowerMock'un Whitebox ve Mockito'nun Whitebox'ı, sınıfların iç durumlarına erişmek ve manipüle etmek için kullanılan hizmet sınıflarıdır, ancak kökenlerinde, işlevselliklerinde ve kullanım bağlamlarında farklı farklılıklar vardır.
Menşe ve Kullanılabilirlik
- Mockito'nun Beyaz Kutusu: Bu, Mockito'da kullanıcıların nesnelerin dahili durumlarını ayarlamasına izin veren bir dahili sınıftı. Bununla birlikte, kötü test uygulamalarının teşvik edilmesi ve kamu kullanımına yönelik olmadığı için Mockito 2.x'den çıkarılmıştır [11]. Buna güvenen kullanıcılar, PowerMock'un beyaz kutusu gibi alternatiflere geçmeye veya kendi yansıma yardımcı programlarını uygulamaya teşvik edildi [3].
- PowerMock'un Beyaz Kutusu: Bu, diğer özelliklerin yanı sıra özel, statik ve son yöntemlerin alayına izin vererek Mockito'nun yeteneklerini genişleten PowerMock kütüphanesinin bir parçasıdır [5]. PowerMock'un Beyaz Kutusu, özel üyelere erişim ve özel yöntemlerin çağrılmasını sağlayan testlere yönelik basitleştirilmiş bir yansıma yardımcı programı sağlar [2] [6].
İşlevsellik
- Mockito'nun Beyaz Kutusu (Tarihi): Kaldırılmadan önce Mockito'nun beyaz kutusu kullanıcıların `setinternalState 'gibi yöntemleri kullanarak nesnelerin dahili durumlarını ayarlamasına izin verdi. Bu, kamu ayarlayıcıları olmadan sınıflara alaylar enjekte etmek için faydalıydı.
- PowerMock'un Beyaz Kutusu: Aşağıdakiler dahil olmak üzere daha geniş bir işlevler seti sunar.
- Özel üyelere erişme: `getInternalState 'gibi yöntemler özel saha değerlerinin alınmasına izin verir.
- Özel yöntemleri çağırmak: `invokemethod 'yöntemi statik olanlar da dahil olmak üzere özel yöntemleri çağırabilir [4] [10].
- Özel alanların ayarlanması: Açıkça belgelenmemiş olsa da, PowerMock'un beyaz kutusu, özel alanları yansıtma yoluyla ayarlamak için kullanılabilir, ancak bu birincil amacı değildir.
Kullanım Bağlamı
- Mockito'nun Beyaz Kutusu: Artık Mockito 2.x'te mevcut olmadığından, kullanıcılara Mümkünse PowerMock'un Beyaz Kutusu veya Spring'in `` yansıtmaTestutils '' gibi alternatifleri kullanmaları tavsiye edilir [1] [3].
- PowerMock'un Beyaz Kutusu: Genellikle özel üyelere veya yöntemlere doğrudan erişimin gerekli olduğu senaryolarda, genellikle eski kodda veya kolayca yeniden düzenlenemeyen karmaşık mantığı test ederken kullanılır. Bununla birlikte, genellikle kapsülleme atlayabildikleri ve kırılgan testlere yol açabileceğinden, bu tür yardımcı programların kullanılmasından kaçınılması önerilir [10].
Özetle, her iki Whitebox yardımcı programı da benzer amaçlara hizmet ederken, PowerMock'un versiyonu daha kapsamlı ve yaygın olarak mevcuttur, oysa Mockito'nun versiyonu test uygulamalarıyla ilgili endişeler nedeniyle kaldırılmıştır. PowerMock'un Beyaz Kutusu, iç sınıf durumlarına erişmek ve manipüle etmek için güçlü bir araçtır, ancak mantıklı bir şekilde kullanılmalıdır.
Alıntılar:[1] https://stackoverflow.com/questions/40280918/what-do-i-u-uuse-instead-of-whitebox-in-mockito-2-2-to-set-set-set-sets
[2] https://www.javadoc.io/doc/org.powermock/powermock-reflect/1.6.5/org/powermock/reflect/whitbox.html
[3] https://proandroiddev.com/mockito-2-x-over-powermock-migration-tips ve tricks-ten-18c52abd1d8
[4] https://johnmullins.co
[5] https://www.calsoftinc.com/blogs/unit-testing-mockito-powermockito.html
[6] https://www.javadoc.io/doc/org.powermock/powermock-reflect/latest/org/powermock/reflect/whitbox.html
[7] https://github.com/mockito/mockito/issues/422
[8] https://www.alibabacloud.com/blog/598057
[9] https://www.lambdatest.com/automation-testing-dvisor/selenium/classes/org.powermock.reflect.whitebox
[10] https://github.com/powermock/powermock/wiki/bypass-apsapsulation
[11] https://github.com/mockito/mockito/issues/489
[12] https://code.haleby.se/2017/02/03/a-case-for-powermock/