Sorunuzun amacını tahmin etseydim derdim:
- Gerçek iş yapan özel müteahhitler için makul kontroller istiyorsunuz ve
- Clover'ın kullanım sınıfları için boş kurucuları dışlamasını istiyorsunuz.
1 için, tüm başlatmanın fabrika yöntemleriyle yapılmasını istediğiniz açıktır. Bu gibi durumlarda, testleriniz kurucunun yan etkilerini test edebilmelidir. Bu, normal özel yöntem testi kategorisine girmelidir. Yöntemleri küçültün, böylece yalnızca sınırlı sayıda belirleyici şey (ideal olarak, yalnızca bir şey ve bir şey iyi) yapın ve sonra onlara dayanan yöntemleri test edin.
Örneğin, [private] kurucum sınıfımın örnek alanlarını a
için ayarlarsa 5
. O zaman test edebilirim (veya daha doğrusu test etmeliyim):
@Test
public void testInit() {
MyClass myObj = MyClass.newInstance(); //Or whatever factory method you put
Assert.assertEquals(5, myObj.getA()); //Or if getA() is private then test some other property/method that relies on a being 5
}
2 için, Util sınıfları için belirlenmiş bir adlandırma modeliniz varsa, clover'ı Util oluşturucularını hariç tutacak şekilde yapılandırabilirsiniz. Örneğin, kendi projemde buna benzer bir şey kullanıyorum (çünkü tüm Util sınıflarının isimlerinin Util ile bitmesi gerektiği kuralına uyuyoruz):
<clover-setup initString="${build.dir}/clovercoverage.db" enabled="${with.clover}">
<methodContext name="prvtCtor" regexp="^private *[a-zA-Z0-9_$]+Util *( *) *"/>
</clover-setup>
Ben kasıtlı olarak dışarı bırakmış .*
aşağıdaki)
çünkü bu tür kurucular istisnalar atmak anlamına gelmez (hiçbir şey yapmaları amaçlanmamıştır).
Elbette, fayda sınıfı olmayan bir sınıf için boş bir kurucuya sahip olmak isteyebileceğiniz üçüncü bir durum olabilir. Bu gibi durumlarda, methodContext
kurucunun tam imzasıyla bir koymanızı tavsiye ederim .
<clover-setup initString="${build.dir}/clovercoverage.db" enabled="${with.clover}">
<methodContext name="prvtCtor" regexp="^private *[a-zA-Z0-9_$]+Util *( *) *"/>
<methodContext name="myExceptionalClassCtor" regexp="^private MyExceptionalClass()$"/>
</clover-setup>
Bu kadar çok istisnai sınıfınız varsa, önerdiğim genelleştirilmiş özel kurucu reg-ex'i değiştirmeyi ve kaldırmayı seçebilirsiniz. Util
ondan . Bu durumda, kurucunuzun yan etkilerinin hala test edildiğinden ve sınıfınızdaki / projenizdeki diğer yöntemlerle kaplandığından emin olmanız gerekecektir.
<clover-setup initString="${build.dir}/clovercoverage.db" enabled="${with.clover}">
<methodContext name="prvtCtor" regexp="^private *[a-zA-Z0-9_$]+ *( *) .*"/>
</clover-setup>