SORU
16 AĞUSTOS 2011, Salı


Özel bir yöntem kamu test birimi için...iyi bir fikir mi?

Moderatör Not:Zaten 39 cevapları burada yayınlanan (bazıları silinmiş) vardır.Eğer göndermeden önceseninya da ekleyebilirsiniz olup olmadığını cevap, düşünün bir şey tartışma için anlamlı. Daha tekrarlamak olasıdır başkası zaten söyledi.

Ben bazen sadece bazı birim testleri yazmak için bir sınıf halk içinde özel bir yöntem kendim yapmak gerek bulmak.

Genellikle bu olacak, çünkü bu yöntem içerir mantık paylaşılan diğer yöntemler arasında sınıf ve düzenli test mantığı kendi başına ya da başka bir sebep olabilir mümkün olmak istiyorum test mantığı kullanılan senkron konuları hakkında endişelenmenize gerek kalmadan iş parçacığı oluşturma sorunları.

Diğer insanlar gerçekten yapmak istemiyorum çünkü bunu kendileri yapıyor bulmak işinizi görür mü? Ben şahsen ikramiye sınıfının dışında gerçekten hizmet etmeyen bir yöntem ortak yapma sorunları ağır basar

GÜNCELLEME

Cevap herkes, kırılmak var gibi görünüyor için teşekkürler insanların ilgisini. Genel fikir bu sınıf hiç kullanılacak gibi kamu API üzerinden yapılmalı test olduğunu düşünüyorum, ve bu katılıyorum. Bu yukarıdaki yaparım nerede yukarıda bahsettiğim durumlarda birkaç nadir vakaları ve bunu yaparken yararları buna değer olduğunu düşündüm.

Herkesin hiç gerçekleşmeli bu noktaya ancak görebiliyorum. Ve ne zaman çocuk yapmayı düşünüyor biraz fazla bence değişen kodunuzu uyum testleri kötü bir fikir sonra sanırım tüm test bir destek aracı bir şekilde ve değişen bir sistem için destek bir destek aracı' olacak, bariz kötü uygulama.

CEVAP
27 Temmuz 2015, PAZARTESİ


Not:Is unit testing alone ever a good reason to expose private instance variables via getters? için yayınlanmıştır, küçük bir usecase orada sunulan özel olabilir.

Genel bir ifadesi olarak, genellikle "üretim" daha kolay test yapmak için kod. yeniden düzenleme için varım Ancak, bu iyi bir ara burada olacağını sanmıyorum. İyi birim test (genellikle) sınıf umursamamalı' uygulama ayrıntıları, görünür onun davranış sadece. Test için iç yığınları sergilemek yerine, Sınıf first() last() çağrıldıktan sonra beklediğiniz sırada sayfaları verir test edebilirsin.

Örneğin, bu sözde kodu göz önünde bulundurun:

public class NavigationTest {
    private Navigation nav;

    @Before
    public void setUp() {
        // Set up nav so the order is page1->page2->page3 and
        // we've moved back to page2
        nav = ...;
    }

    @Test
    public void testFirst() {
        nav.first();

        assertEquals("page1", nav.getPage());

        nav.next();
        assertEquals("page2", nav.getPage());

        nav.next();
        assertEquals("page3", nav.getPage());
    }

    @Test
    public void testLast() {
        nav.last();

        assertEquals("page3", nav.getPage());

        nav.previous();
        assertEquals("page2", nav.getPage());

        nav.previous();
        assertEquals("page1", nav.getPage());
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dave Wallace

    Dave Wallace

    27 Kasım 2007
  • Gan Eden Productions

    Gan Eden Pro

    11 HAZİRAN 2011
  • Google Chrome

    Google Chrom

    1 EYLÜL 2008