2016-04-07 31 views
-1

burada benim Senaryo:test etmek nasıl senaryo birçok yöntemler çağıran bir yardımcı yöntem Örneğin

function A() { 
    C(); 
} 

function B() { 
    C(); 
} 

function C() { 
    if (someState > 0) then doSomething(); 
    else doSomethingElse(); 
} 

Bütün test durumu o kapsama tüm kod yapmak istiyorum. C()'un C() test edilmesi için bir koşulu olduğundan, iki test yöntemine ihtiyacımız vardır: testC1() ve testC2(). Yani toplam test: testA_C1()testA_C2()testB_C1()testB_C1(). daha fazla koşul olduğunda test yöntemlerinin sayısı önemli ölçüde artmış olacak ve aynı yöntemi kullanın daha yöntemleri vardır C()

burada sorun şu: aslında bence bu yüzden C(), A() ve B() herhangi durumuna bağlı değildir C() ayrı olarak test edilebilir. Bu yüzden büyük miktarda birim testi yapabileceğimizi düşünüyorum.

Sorum şu: Bu senaryoda nasıl test yapabilirim? Android Test için Powermock kullanıyorum.

sayesinde :) Eğer c()a() ve b() durumuna bağlıdır olmadığını söyledi olarak

cevap

1

o zaman extract method object üstlenmeden yapabilir ve ayrı ayrı test edin. Eğer fabrika kullanırsanız, PowerMock'a ihtiyacınız olmayacaktır.

a() ve b() ürününün c() sonucuna bağlı olmaması durumunda, suppress method kullanılabilir. a() ve b()c() sonucu bağlıdır

, o zaman (casus kullanarak) kısmen sahte oluşturup c() alay edebilir.

+0

Bu yüzden hala test ediyoruz: A_C1() '' A_C2() '' B_C1() '' B_C2() 'Yinelenen kodu kaydetmek için bahsettiğiniz bazı metodolojileri kullanın. sağ? – hqt

+0

Eğer A() 've' B() 'deki kod yolları' C() 'ye bağlı değilse - o zaman, sadece" A "," B "," C_1 "," C_2 "yi test edeceksiniz. [Örnekler] (https://github.com/thekingnothing/stackoverflow/tree/master/q36482557) oluşturabilirim. –