2012-12-03 14 views
5

i böyle java kodları var: şimdi ben sadece) (olsun test etmek istiyorumaynı nesneye bir yöntemi test ederken bir nesnenin bir yöntemi taklit nasıl

public class A { 
    public int get() { 
     // many codes 
     String s = new String(); 
     //... 
     int n = 5; 
     return isEmpty(s) ? n : -1; 
    } 
    public boolean isEmpty(String s) { 
     return s.isEmpty(); 
    } 
} 

i IsEmpty test etmek istemiyoruz() aynı zamanda, isEmpty() alay etmek istiyorum, sadece bir yöntemi test edin, eğer sınıfın başka bir yöntemini çağırırsa, yöntemi alay etmek kolay olabilir mi?

+0

başka sınıfa işlevi devretmek zorunda olacak almak olmadan IsEmpty alay ve sonra A. içine gerçek dünyadan bir örnek daha az önemsiz Umut enjekte etmek bu.... –

cevap

3

bir çalışılabilir bir yaklaşım değil sahte A etmektir ve

public class TestableA extends A 
{ 
    @Override 
    public boolean isEmpty(String s) 
    { 
     // "mock" impl goes here, eg.: 
     return s; 
    } 
} 

böyle bir şey yapmak yerine TestableA açısından sizin birim test yazmak. Hatta bir @Before yönteminde bu oluşturabilirsiniz:

public class UnitTest 
{ 
    private A a; // note: A, not TestableA! 

    @Before 
    public void setUp() 
    { 
     this.a = new A() 
     { 
      @Override 
      public boolean isEmpty(String s) 
      ... 
     } 
    } 

    @Test 
    ... 
} 
İlgili konular